我对此问题感到困惑。
我在gridview的模板字段旁边放置了一个按钮,并希望在单击相应按钮时从该特定GridView行返回数据。
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button2" CssClass ="btnSkin" runat="server" Text="Answer" Width="117px" onclick="Button2_Click" />
</ItemTemplate>
</asp:TemplateField>
在按钮单击事件启动中,我想通过创建GridViewRow元素读取该数据。
protected void Button2_Click(object sender, EventArgs e)
{
GridViewRow gvr = (GridViewRow)(sender as Control).Parent.Parent;
Label8.Text = gvr.Cells[1].Text;
Label10.Text = gvr.Cells[2].Text;
Label12.Text = gvr.Cells[3].Text;
}
现在的问题是,GridViewRow单元返回空字符串。
我该怎么办?????
最佳答案
使用<asp:TemplateFields>
时,实际上需要查找控件内部的文本,例如<asp:Label>
中使用的<ItemTemplate>
。
单元格将没有文本,而是具有文本的单元格内的控件。
因此,如果假设,您在<ItemTemplate>
之一中具有一个Label,则为:
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("CustomerID") %>'>
</asp:Label>
</ItemTemplate>
然后在按钮Click事件中使用以下代码访问此Label控件的Text:[假设第二列包含上面定义的
<ItemTemplate>
]protected void Button2_Click(object sender, EventArgs e)
{
GridViewRow gvr = (GridViewRow)(sender as Control).Parent.Parent;
String str = ((Label)gvr.Cells[1].FindControl("Label1")).Text;
}