2017-07-09 20 views
0

私はGridViewに更新リンクがあります。いずれかの行から「編集」を選択すると、グリッド内のその行の値がテキストボックスに変わり、編集することができます。 「編集」ボタンが消え、「更新」リンクに変わります。次に、ユーザーは1つ(または複数の)のテキストボックスの内容を編集し、「更新」が選択されます。 JavaScriptの確認ボックスが表示され、ユーザーが値を更新するかどうかを尋ね、選択した選択内容に応じて変更が保存または破棄されます。これは "OnClientClick"によって実行されます しかし、検証が失敗した場合は、変更されたサーバー側を検証し、定義済みのエラーメッセージをユーザーに渡します。例。間違ったフォーマットの登録された会社名が選択された行のテキストボックスの1つに入力されている場合。 グリッド行は、ユーザーがエラーを修正するまで編集可能な状態のままです。グリッド行から「キャンセル」を選択すると、操作を破棄できます(すでにこの機能があります)。 C#のrowcommand機能である:ASPXはGridView RowCommandの更新機能がjavascript関数に変数を送信する

<asp:LinkButton ID="lnkUpdate" runat="server" CommandArgument='<%# Container.DataItemIndex %>' OnClientClick="return ConfirmOnUpdate();" CommandName="Update" > Update</span></asp:LinkButton> 

ある

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "Update") 
     { 
      // get the primary key id of the clicked row 
      int id = Convert.ToInt32(e.CommandArgument); 
      SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["moduleConnectionString"].ConnectionString); 
      SqlCommand cmd = new SqlCommand(); 
      cmd.CommandText = "UPDATE suppliers SET [email protected]_company_name WHERE [email protected]_code;"; 

    System.Web.UI.WebControls.TextBox myTextBox_registered_company_name = GridView1.Rows[id].FindControl("Registered_company_name") as System.Web.UI.WebControls.TextBox; 
      cmd.Parameters.Add("@registered_company_name", SqlDbType.VarChar).Value = myTextBox_registered_company_name.Text; 

      System.Web.UI.WebControls.Label myLabel = GridView1.Rows[id].FindControl("suppliercode") as System.Web.UI.WebControls.Label; 
      cmd.Parameters.Add("@supplier_code", SqlDbType.VarChar).Value = Convert.ToInt32(myLabel.Text); 

    cmd.Connection = con; 
      con.Open(); 

      cmd.ExecuteNonQuery(); 
      con.Close(); 




      GridView1.EditIndex = -1; 
      BindData(); 


     } 
    } 

Javascriptを

function ConfirmOnUpdate() 
     { 
      if (confirm("Are you sure you want to update this record?")) 
       return true; 
      else 
       return false; 
     } 

サーバー側を処理するためにこのコードを使用して任意の応答を

答えて

0

をありがとうです検証。

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "Update") 
     { 
      // get the primary key id of the clicked row 
      int id = Convert.ToInt32(e.CommandArgument); 

      System.Web.UI.WebControls.TextBox myTextBox_registered_company_name = GridView1.Rows[id].FindControl("Registered_company_name") as System.Web.UI.WebControls.TextBox; 

      if (myTextBox_registered_company_name.Text != "") // add your validation in this if block, now it checks textbox is not empty; 
      { 
       SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["moduleConnectionString"].ConnectionString); 
       SqlCommand cmd = new SqlCommand(); 
       cmd.CommandText = "UPDATE suppliers SET [email protected]_company_name WHERE [email protected]_code;"; 

       System.Web.UI.WebControls.TextBox myTextBox_registered_company_name = GridView1.Rows[id].FindControl("Registered_company_name") as System.Web.UI.WebControls.TextBox; 
       cmd.Parameters.Add("@registered_company_name", SqlDbType.VarChar).Value = myTextBox_registered_company_name.Text; 

       System.Web.UI.WebControls.Label myLabel = GridView1.Rows[id].FindControl("suppliercode") as System.Web.UI.WebControls.Label; 
       cmd.Parameters.Add("@supplier_code", SqlDbType.VarChar).Value = Convert.ToInt32(myLabel.Text); 

       cmd.Connection = con; 
       con.Open(); 

       cmd.ExecuteNonQuery(); 
       con.Close(); 

       GridView1.EditIndex = -1; 
       BindData(); 
      } 
      else 
      { 
       ScriptManager.RegisterStartupScript(this,this.GetType(),"Error Message", "alert('TextBox is empty!')",true); 
      } 
     } 

これはあなたを助けることでしょう!

関連する問題