ASP.NET C#中点击按钮无法获取GridView内TextBox的值
GridView中TextBox获取值为null的原因及解决办法
以下是导致txtRemarks.Text返回null的常见原因及对应解决方案:
页面回发时未判断
IsPostBack就重新绑定GridView
这是最核心的原因。如果在Page_Load事件中,没有通过!IsPostBack判断就执行GridView的数据绑定操作,每次回发(比如点击按钮、CheckBox自动回发)时,GridView都会重新从数据源加载原始数据,直接覆盖用户在TextBox中输入的内容,最终获取到的是REJECT_REMARKS字段的初始值(若该字段为null则返回空)。
解决办法:仅在首次加载页面时绑定数据:protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { // 执行GridView数据绑定的代码 BindHotoIPData(); } }CheckBox的
AutoPostBack导致输入内容丢失
你的CheckBox设置了AutoPostBack="true",每次点击都会触发页面回发。如果回发时未正确判断IsPostBack就重新绑定GridView,用户之前输入的备注会被清空,后续点击btnRejectSite时,TextBox的值已经被重置为初始状态。
解决办法:如果不需要实时响应CheckBox的选中状态,直接去掉AutoPostBack="true";若必须保留自动回发,确保回发逻辑中不重新绑定GridView。未针对选中行处理逻辑
你的代码循环所有GridView行时,每次都会覆盖strRemarks的值,最终仅保留最后一行的内容。如果需要获取选中行的备注,必须在循环中判断CheckBox是否选中:foreach (GridViewRow row in rptHotoIPDataInfo.Rows) { if (row.RowType == DataControlRowType.DataRow) { CheckBox chkRow = row.FindControl("chkRow") as CheckBox; if (chkRow != null && chkRow.Checked) { strID = (row.FindControl("lbl_ID") as Label).Text; TextBox txtRemarks = row.FindControl("txtRemarks") as TextBox; if (txtRemarks != null) { strRemarks = txtRemarks.Text; // 在这里处理当前选中行的业务逻辑 } } } }
内容的提问来源于stack exchange,提问作者Nadeem
相关产品推荐
相关产品推荐

