2014-07-03 54 views
1

我有一个文本框和一个按钮都在gridview上,当用户点击按钮时我想获取文本框文本并保存到数据库然后清除文本!我用它下面的代码工作正常,并保存到数据库,但不能清除文本框为什么?如何改变文本框文本后点击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

您是否正在重新发布您的gridview回发?你的page_load发生了什么? –

+0

@RickS我编辑了我的问题 –

+0

textbox1.text = string.Empty;使用这个绑定你的gridview后 – Amitesh

回答

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> 
+1

这非常符合我的建议。我很高兴你明白了。 -Judson –

3

您需要在UI层面做到这一点。

使用jquery.post调用保存数据的方法。

一些回报,回到$。员额回调告诉jQuery的该职位氏完全,

然后像做$( '#myTextField将')。VAL( '')

假设文本框有一个ID。我假设这是HTML?

+0

这样会清除所有文本框,但我只想清除它们! –

+0

$('#mytextfield').val('')仅清除具有该ID的特定文本框。您可以通过将ID传递给标记id =“someIdVariable”或在循环中为IDS创建自动递增变量来自动生成每个文本框的ID。如果您需要更多,请告诉我。 –

0

您可能需要重新绑定您的网格,因为从您发布的代码中不清楚您将重新绑定网格的位置。

0

您需要在页面中启用AjaxPostback。在此之后,在你的Page_Load逻辑,包括代码

if(IsPostBack){...}else{...} 

因此,你可以处理这取决于这是否是页面的全新视图或回传(页面刷新UI元件的结构由于用户点击按钮)。 UI元素被发送到浏览器,之后,服务器无法更改它,除非刷新页面本身。

该手册(和我推荐的)的方式是通过jQuery回发来做到这一点。正如在另一个答案中指出的那样,您需要为客户端浏览器设置端点以进行连接。服务器完成其工作后,将结果返回给客户端。然后使用jQuery来更新文本框。

相关问题