我在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 !!!!
}
}
protected void Page_Load(object sender, EventArgs e)
{
SessionLable.Text = Session["ID"].ToString();
if (!IsPostBack)
{
getData();
}
}
public void getData()
{
activity.DataSource = BusinessLayer.Activity_Table.GetByProfileData(ID, -1, activity.PageSize);
activity.DataBind();
}
答案 0 :(得分:3)
您需要在UI级别执行此操作。
使用jquery.post调用保存数据的方法。
返回$ .post回调以告诉jquery帖子完成,
然后执行类似$('#mytextfield')。val('')
的操作假设文本框有ID。我假设这是HTML?
答案 1 :(得分:0)
您可能需要重新绑定网格,因为根据您发布的代码,您不清楚在哪里重新绑定网格。
答案 2 :(得分:0)
您需要在页面中启用AjaxPostback。之后,在您的Page_Load逻辑中,包含代码
if(IsPostBack){...}else{...}
因此,您可以处理UI元素的构造,具体取决于这是页面的全新视图还是回发(由于用户单击按钮而刷新页面)。 UI元素被发送到浏览器,之后,除了刷新页面本身之外,服务器无法更改它。
手册(以及我推荐的方法)方法是通过jQuery回发来实现。正如在另一个答案中指出的那样,您需要为客户端浏览器设置端点以进行连接。服务器完成其工作后,将结果返回给客户端。然后使用jQuery更新文本框。
答案 3 :(得分:0)
我这样做是为了解决我的问题!
<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>