gpt4 book ai didi

c# - ASP.NET GridView RowCommand 文本框为空

转载 作者:太空狗 更新时间:2023-10-29 23:52:32 29 4
gpt4 key购买 nike

您好,我有一个 GridView ,每行都有一个文本框,我正在尝试获取 RowCommand 事件中的值。下面的代码适用于除第一行以外的所有行。第一行的 textbox.text 值始终为空。

<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_OnRowCommand" >
<Columns>
<asp:TemplateField>
<ItemTemplate>
Title <%# Eval("Title")%>

<asp:TextBox ID="TextBoxAddPost" runat="server"></asp:TextBox>

<asp:LinkButton ID="LinkButtonAddPost" CommandName="AddPost" CommandArgument='<%# Eval("postId") %>' runat="server">Add Post</asp:LinkButton>

</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

代码隐藏:

protected void Page_Load(object sender, EventArgs e)
{
if(IsPostBack)
bindGridView();
}

protected void GridView1_OnRowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "AddPost")
{
GridViewRow row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);

TextBox textBox = (TextBox)row.FindControl("TextBoxAddPost");

//Empty for first row but works for all others

Debug.WriteLine("row: " + row.RowIndex + ", textBox:" + textBox.Text.Trim());

GridView1.DataBind();
}
}

为了便于说明,以上代码已经过简化。每行实际上包含一个子 GridView ,因此为什么需要每行中的文本框。我担心 page_load 中的绑定(bind)会覆盖文本框的值,但是,如果没有 page_load 绑定(bind),则不会触发 rowCommand 事件。

我发现我有点奇怪,它对除第一行以外的所有行都适用。

最佳答案

要从文本框中获取数据,您必须先通过以下代码设置文本属性。

<asp:TextBox ID="TextBoxAddPost" runat="server" Text='<%# Eval("Title") %>'></asp:TextBox>

它肯定会从文本框中给出值。

无论哪种方式,您还可以设置 gridview 的 datakeynames 属性。 Click here for datakeynames

关于c# - ASP.NET GridView RowCommand 文本框为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7310878/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com