嗨,我遇到了一个问题,我希望你们能帮助我完成这件事。
我有一个带有更新面板的Web应用程序。我有一个网格视图放在更新面板内。在网格视图中,文本框的模板字段为Auto PostBack =“true”。在Text Changed事件中,我想在服务器端获取该行数据。
网格视图与页面加载事件的数据绑定,并在计时器滴答时每隔一分钟绑定一次。
我面临的问题是,在服务器端,我将行数据视为null。代码可以帮助你们。
Aspx页面
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="c-table">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" AllowPaging="True" PageSize="100" OnPageIndexChanging="GridView1_PageIndexChanging" OnRowCommand="GridView1_RowCommand">
<Columns>
<asp:TemplateField HeaderText="Id">
<ItemTemplate>
<p> <%# Eval("Id") %></p>
</ItemTemplate>
<asp:TemplateField>
<asp:TemplateField HeaderText="Title">
<ItemTemplate>
<p> <%# Eval("Title") %></p>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Bid">
<ItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" OnTextChanged="TextBox2_TextChanged" AutoPostBack="true"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Link">
<EditItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("id") %>'></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:LinkButton ID="LinkButton3" runat="server" CommandName="visit" CommandArgument='<%# Bind("id") %>'>Visit</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
.cs代码
protected void TextBox2_TextChanged(object sender, EventArgs e)
{
GridViewRow gridRow = ((GridViewRow)((TextBox)sender).NamingContainer);
int index = gridRow.RowIndex;
string check = GridView1.Rows[index].Cells[0].Text;
}
在Check中我得到的值为NULL我不知道为什么?期待着寻求帮助。感谢
答案 0 :(得分:2)
TextBox txt = (TextBox)gridView1.Rows[rowIndex].FindControl("id");
string test = txt.Text;
答案 1 :(得分:1)
更改GridTemplate并尝试
<asp:TemplateField HeaderText="Id">
ItemTemplate>
<asp:Textbox id="txtId" runat="server" Text='<%# Eval("Id") %>'> </asp:Textbox>
</ItemTemplate>
<asp:TemplateField>
GridViewRow row = sender.NamingContainer as GridViewRow;
int rowidx = row.RowIndex;
Textbox check = (TextBox) GridView1.Rows[row].Findcontrol("id");
试试此代码
答案 2 :(得分:1)
当我使用以下内容时,我变得空白(&#34;&#34;)
<asp:TemplateField>
<ItemTemplate>
<%# Eval("Id") %>
</ItemTemplate>
但是以下是返回值:
<asp:BoundField DataField="Id" HeaderText="Id" InsertVisible="False" ReadOnly="True" SortExpression="Id" />
希望这会有所帮助:)