C# 单击gridview中的按钮后如何更改文本框文本
我在gridview上有一个文本框和一个按钮,当用户单击按钮时,我想获取文本框文本并保存到数据库,然后清除文本!我使用了下面的代码,它工作良好,并保存到数据库,但无法清除文本框为什么C# 单击gridview中的按钮后如何更改文本框文本,c#,asp.net,gridview,C#,Asp.net,Gridview,我在gridview上有一个文本框和一个按钮,当用户单击按钮时,我想获取文本框文本并保存到数据库,然后清除文本!我使用了下面的代码,它工作良好,并保存到数据库,但无法清除文本框为什么 protected void sendcm_Click(object sender, EventArgs e) { try { Button sendcm = (Button)sender; GridViewRow g
protected void sendcm_Click(object sender, EventArgs e)
{
try
{
Button sendcm = (Button)sender;
GridViewRow gvrow = (GridViewRow)sendcm.NamingContainer;
int ActivityTypeID = Convert.ToInt32(activity.DataKeys[gvrow.RowIndex].Values["ActivityTypeID"].ToString());
int SourceID = Convert.ToInt32(activity.DataKeys[gvrow.RowIndex].Values["SourceID"].ToString());
TextBox tt = (TextBox)activity.Rows[gvrow.RowIndex].FindControl("cmtextbox");
if (tt.Text != "")
{
BusinessLayer.StatusComment_Table ncm = new BusinessLayer.StatusComment_Table();
ncm.Id = Convert.ToInt32(Session["ID"].ToString());
ncm.Statusid = SourceID;
ncm.Statuscommentdate = System.DateTime.Now;
ncm.Statuscommenttext = tt.Text;
ncm.Save();
tt.Text = ""; // its not working !!!!
}
}
您需要在UI级别执行此操作 使用jquery.post调用保存数据的方法 将某些内容返回到$.post回调,告诉jquery post已完成 然后执行类似$('#mytextfield').val('')的操作
假设文本框有一个ID。我假设这是HTML?你可能需要重新绑定你的网格,因为从你发布的代码中不清楚你在哪里绑定你的网格。你需要在你的页面中启用AjaxPostback。之后,在页面加载逻辑中,包含代码
if(IsPostBack){...}else{...}
因此,您可以根据页面的新视图还是回发(由于用户单击按钮而刷新页面)来处理UI元素的构造。UI元素被发送到浏览器,之后,服务器除了刷新页面本身之外,无法对其进行更改
手动(也是我推荐的一种)方法是通过jQuery回发来实现这一点。正如在另一个答案中指出的,您需要为客户端浏览器设置一个端点以进行连接。服务器完成其工作后,将结果返回给客户端。然后使用jQuery更新文本框。我这样做是为了解决我的问题
<asp:TextBox ID="cmtextbox" type="text" clientid="cmtextbox" TextMode="MultiLine" placeholder="نظر دهید..." Rows="1" style="resize:none" class="form-control" runat="server"></asp:TextBox>
<asp:Button ID="sendcm" style="margin-top:2px;" OnClick="sendcm_Click" class="btn btn-success btn-sm pull-left " OnClientClick="ClearTextbox(this)" runat="server" Text="ارسال" />
</script>
<script type="text/javascript">
ClearTextbox = function (that) {
$(that).prevUntil('div.stop', '[ClientID="cmtextbox"]').val('');
}
</script>
ClearTextbox=函数(该函数){
$(即).prevUntil('div.stop','[ClientID=“cmtextbox”]').val('';
}
您是否在回邮时重新绑定gridview?你的页面加载中发生了什么?@RickS我编辑了我的问题TextBox1.text=string.Empty;在绑定GridView后使用此方法将清除所有文本框,但我只想清除其中的一个$(“#mytextfield”).val(“”)仅清除具有该ID的特定文本框。您可以通过将ID传递到标记ID=“someIdVariable”或在循环中为ID创建自动递增变量来自动生成每个文本框的ID。如果你需要更多,请告诉我。这与我的建议非常一致。我很高兴你明白了-贾德森
if(IsPostBack){...}else{...}
<asp:TextBox ID="cmtextbox" type="text" clientid="cmtextbox" TextMode="MultiLine" placeholder="نظر دهید..." Rows="1" style="resize:none" class="form-control" runat="server"></asp:TextBox>
<asp:Button ID="sendcm" style="margin-top:2px;" OnClick="sendcm_Click" class="btn btn-success btn-sm pull-left " OnClientClick="ClearTextbox(this)" runat="server" Text="ارسال" />
</script>
<script type="text/javascript">
ClearTextbox = function (that) {
$(that).prevUntil('div.stop', '[ClientID="cmtextbox"]').val('');
}
</script>