asp.net 点击datalist列表任何一处,怎样获取当前行的索引并把索引输出到datalist外面的label中
展开全部
你绑定的时候是怎么绑定的,给个简单的例子,如果是通过<tr>一行一行绑定的,给<tr>一个ID,在加上服务器标记如:
<table>
<asp:DataList ID="DataList1" runat="server" Width="300px" Height="200px" OnItemDataBound="DataList1_OnItemDataBound">
<ItemTemplate>
<tr id="tt1" runat="server" >
<td><%#Eval("COURSE_NAME")%></td>
</tr>
</ItemTemplate>
</asp:DataList>
</table>
后台在OnItemDataBound事件里面获取tr后给tr的ID重新赋值,在给它注册个前台脚本
HtmlTableRow tr1 = e.Item.FindControl("tt1") as HtmlTableRow;
tr1.Attributes.Add("onclick", "tr_onclick(id)");
tr1.ID = e.Item.ItemIndex.ToString();
最后在前台写个脚本就行了
function tr_onclick(id)
{
var tid=id.split('_')[2];
alert(tid);//这就算当前索引了,你要赋值就获取控件ID去赋值
}
<table>
<asp:DataList ID="DataList1" runat="server" Width="300px" Height="200px" OnItemDataBound="DataList1_OnItemDataBound">
<ItemTemplate>
<tr id="tt1" runat="server" >
<td><%#Eval("COURSE_NAME")%></td>
</tr>
</ItemTemplate>
</asp:DataList>
</table>
后台在OnItemDataBound事件里面获取tr后给tr的ID重新赋值,在给它注册个前台脚本
HtmlTableRow tr1 = e.Item.FindControl("tt1") as HtmlTableRow;
tr1.Attributes.Add("onclick", "tr_onclick(id)");
tr1.ID = e.Item.ItemIndex.ToString();
最后在前台写个脚本就行了
function tr_onclick(id)
{
var tid=id.split('_')[2];
alert(tid);//这就算当前索引了,你要赋值就获取控件ID去赋值
}
更多追问追答
追问
tr1.Attributes.Add("onclick", "tr_onclick(id)");
未将对象引用设置到对象的实例。
System.NullReferenceException: 未将对象引用设置到对象的实例。
感觉你这非常适合我。调试的时候老是出现上面的错误
追答
那是你没有获取到前台的
确定id对了,还有runat="server"标记加了么?
展开全部
原理:通过点击每一行的特定按钮来取得那一行的索引;把索引绑定到一个LinkButton的CommandArgument中,为这个LinkButton写个点击函数,这函数的功能是取得当前点击
的LinkButton按钮的CommandArgument的值,然后把这值输出!
页面前段代码:
<div>
<asp:DataList ID="dltTest" runat="server">
<HeaderTemplate><table><tr><td>ID索引</td><td>内容</td><td>操作</td></tr></HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<%# Eval("id") %>
</td>
<td>
<%#Eval("content") %>
</td>
<td>
<asp:LinkButton ID="lbtnGetId" runat="server" CommandArgument='<%#Eval("id") %>' OnClick="lbtnGetId_Click">取出id值</asp:LinkButton>
</td>
</tr>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:DataList>
索引值:<asp:Label ID="lbId" runat="server" Text=""></asp:Label>
</div>
页面后端代码:
绑定数据的就不写了,加上这个LinkButton的函数
public void lbtnGetId_Click(object sender, EventArgs e)
{
string id = (sender as LinkButton).CommandArgument;
lbId.Text = id;
Response.Write("<script type='text/javascript'>alert('" + id + "');</script>");
}
的LinkButton按钮的CommandArgument的值,然后把这值输出!
页面前段代码:
<div>
<asp:DataList ID="dltTest" runat="server">
<HeaderTemplate><table><tr><td>ID索引</td><td>内容</td><td>操作</td></tr></HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<%# Eval("id") %>
</td>
<td>
<%#Eval("content") %>
</td>
<td>
<asp:LinkButton ID="lbtnGetId" runat="server" CommandArgument='<%#Eval("id") %>' OnClick="lbtnGetId_Click">取出id值</asp:LinkButton>
</td>
</tr>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:DataList>
索引值:<asp:Label ID="lbId" runat="server" Text=""></asp:Label>
</div>
页面后端代码:
绑定数据的就不写了,加上这个LinkButton的函数
public void lbtnGetId_Click(object sender, EventArgs e)
{
string id = (sender as LinkButton).CommandArgument;
lbId.Text = id;
Response.Write("<script type='text/javascript'>alert('" + id + "');</script>");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以加一个a标签,外部可以request.QueryString得到a标签中的值,然后放在label中
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询