Asp.net WebForm 中 UpdatePanel 内的模板文本框字段
Posted
技术标签:
【中文标题】Asp.net WebForm 中 UpdatePanel 内的模板文本框字段【英文标题】:Template TextBox feild inside UpdatePanel in Asp.net WebForm 【发布时间】:2015-12-16 08:12:08 【问题描述】:我有一个数据绑定的 gridview,我在里面有一个 TextBox
模板字段
标记如下所示
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView ID="tbl_costing" runat="server" AutoGenerateColumns="False" OnRowDataBound="tbl_costing_RowDataBound" CellPadding="4" ForeColor="#333333" GridLines="None" Width="1023px" ShowHeaderWhenEmpty="True">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:TemplateField HeaderText="Consumption" SortExpression="Consumption">
<ItemTemplate>
<asp:UpdatePanel ID="UpdatePanel3" runat="server">
<ContentTemplate>
<asp:TextBox ID="txt_consumption" runat="server" Text='<%# Bind("Consumption") %>' AutoPostBack="True" OnTextChanged="txt_consumption_TextChanged"></asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txt_consumption" ErrorMessage="Required" ForeColor="#CC3300">*
</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="txt_consumption" ErrorMessage="Enter valid Consumption" ForeColor="Red" ValidationExpression="^[\d.]+$">*
</asp:RegularExpressionValidator>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
现在我需要在回发事件中获取Textbox
的行索引,我是这样做的
protected void txt_consumption_TextChanged(object sender, EventArgs e)
try
TextBox txtcons = (TextBox)sender;
GridViewRow currentRow = (GridViewRow)txtcons.Parent.Parent; // Error Here .....
int rowindex = 0;
rowindex = currentRow.RowIndex;
calculateperdozen(currentRow);
catch (Exception)
任何人都可以建议获得currentRow
或rowindex
的方法吗?
【问题讨论】:
【参考方案1】:很抱歉,直到现在我还没有更新我为这个问题得到的解决方案。让它帮助有相同查询的人
我创建了一个类,它将循环直到它到达 Gridviewrow 作为命名容器
public static class ControlTreeExtensions
public static TContainer ClosestContainer<TContainer>(this Control theControl) where TContainer : Control
if (theControl == null) throw new ArgumentNullException("theControl");
Control current = theControl.NamingContainer;
TContainer result = current as TContainer;
while (current != null && result == null)
current = current.NamingContainer;
result = current as TContainer;
return result;
然后在我的 Click 事件或 Change 中,即使我调用了该函数
protected void txt_consumption_TextChanged(object sender, EventArgs e)
try
TextBox txtcons = (TextBox )sender;
GridViewRow currentRow = txtcons.ClosestContainer<GridViewRow>();
int rowindex = 0;
rowindex = currentRow.RowIndex;
calculateperdozen(currentRow);
catch (Exception)
【讨论】:
以上是关于Asp.net WebForm 中 UpdatePanel 内的模板文本框字段的主要内容,如果未能解决你的问题,请参考以下文章
想要从 XElements 中提取标签并在 ASP.NET Webform 上显示为网格
添加 toastr javascript asp.net webform
asp.net webform 中使用Microsoft ASP.NET Web Optimization压缩js及css