C# 单击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

我在gridview上有一个文本框和一个按钮,当用户单击按钮时,我想获取文本框文本并保存到数据库,然后清除文本!我使用了下面的代码,它工作良好,并保存到数据库,但无法清除文本框为什么

     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>