两种方法
1.TextBox 绑定TextChanged 并设置AutoPostBack ="true" ,如果不设置AutoPostBack ="true"则不会触发TextChanged事件,然后在对应的方法里面循环Repeater查找改变项
部分代码
<ItemTemplate > <tr> <td style ="width :9%;"><%#Eval("Date")%> <asp:HiddenField ID ="hfkey" runat ="server" Value ='<%#Eval("ID")%> ' /></td> <td style ="width :9%;"><%#Eval("FBASalesDays")%></td> <td style ="width :9%;"><asp:TextBox ID ="txtUPSShipQty" runat="server" Text ='<%#Eval("UPSShipQty")%>' AutoPostBack ="true" OnTextChanged ="btnCal_Click" ></asp:TextBox> </td> </tr> </ItemTemplate>
后台部分代码
protected void btnCal_Click(object sender, EventArgs e) { foreach (RepeaterItem item in rpdList.Items) { if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem) { HiddenField hfkey = item.FindControl("hfkey") as HiddenField; TextBox txtUPSShipQty = item.FindControl("txtUPSShipQty") as TextBox; DataRow[] rows = dt.Select("ID ='" + hfkey.Value + "'"); if (rows != null && rows.Length > 0) { if (rows[0]["UPSShipQty"].ToString().Trim() != txtUPSShipQty.Text.Trim()) { rows[0]["UPSShipQty"] = txtUPSShipQty.Text.Trim(); CalFBAShipQty2(dt, 3, "UPSShipQty", hfkey.Value.Trim()); break; } } } } rpdList.DataSource = dt; rpdList.DataBind(); }