我对此问题感到困惑。

我在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;
    }

10-07 19:40
查看更多