急求!如何在GridView的OnRowCommand事件 用FindControl找到模版控件?

Html:<asp:GridViewID="GridView1"runat="server"AutoGenerateColumns="False"OnRowCommand... Html:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand" Width="100%">
<Columns>
<asp:TemplateField HeaderText="序号" Visible="False">
<ItemTemplate>
<asp:Label ID="Lab_DId" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "CloDId") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button1" runat="server" CommandName="Edit" Text="编辑" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button2" runat="server" CommandName="Delete" Text="删除" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<HeaderStyle BackColor="#8080FF" />
</asp:GridView>
CS:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName.ToString().Trim() == "Edit")
{

string ClDId = ((Label)(GridView1.Rows[Convert.ToInt32(e.CommandArgument)].FindControl("Lab_DId"))).Text.Trim();
//e.CommandArgument调试数据为空
string ClDId1 = ((Label)(GridView1.SelectedRow.FindControl("Lab_DId"))).Text.Trim();
}
}
这两种都出错怎么回事啊?
大家帮帮忙啊!
展开
 我来答
majunbopm
2008-07-28 · TA获得超过832个赞
知道小有建树答主
回答量:1027
采纳率:0%
帮助的人:1034万
展开全部
RowDataBound事件里面把行的索引绑定到button的CommandArgument 属性上面!
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
LinkButton rb = (LinkButton)e.Row.FindControl("LinkButton1");
if (rb != null)
rb.CommandArgument = e.Row.RowIndex.ToString();
//把选中行的RowIndex也传过去,提交后在服务器端取值时用
}
}

然后rowcommand事件里面这么写就找到啦!
Label lab1 = (Label)(GridView1.Rows[int.Parse(e.CommandArgument.ToString())].FindControl("Label1"));
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式