2011-04-26 55 views
0
 protected void GridView2_OnCommand(Object sender, GridViewCommandEventArgs e) 

     { 
      if (e.CommandName == "Reply") 
      { 
       con = new System.Data.SqlClient.SqlConnection(); 
       con.ConnectionString = "Data Source=myconnectionstring; Integrated Security = true; Connect Timeout = 30; User Instance = True"; 
       con.Open(); 

       string div = "','"; 
       GridViewRow selectedRow = GridView2.Rows[Convert.ToInt32(e.CommandArgument)]; 
       SqlCommand cmd = new SqlCommand("INSERT INTO SellerResponse VALUES ('" + 
        //THIS LINE IS THE ISSUE 
       Request.QueryString["ID"] + div + selectedRow.Cells[2].Text + div + DateTime.Now.ToString() + div + selectedRow.Cells[3].Text + ((System.Web.UI.WebControls.TextBox)(FindControl(selectedRow.Cells[1].UniqueID))).Text /*this is the cell that contains the textbox*/+ "');", con); 
      } 
     } 

任何想法如何實現?從GridView數據單元訪問文本框(ASP.NET)

+0

你有這麼多的東西塞進了一行代碼,你將永遠不會調試。即使你有它的工作,這將是無法維持的。將每個邏輯步驟分解成單獨的一行代碼。 – 2011-04-26 02:27:30

回答

0
protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e) 
     { 

      try 
      { 
       int index = Convert.ToInt32(e.CommandArgument); 

       if (e.CommandName == "Reply") 
       { 

        on = new System.Data.SqlClient.SqlConnection(); 
        con.ConnectionString = "Data Source=myconnectionstring; Integrated Security = true; Connect Timeout = 30; User Instance = True"; 
        con.Open(); 

        string div = "','"; 
        GridViewRow selectedRow = GridView2.Rows[Convert.ToInt32(e.CommandArgument)]; 
        SqlCommand cmd = new SqlCommand("INSERT INTO SellerResponse VALUES ('" + 
        //THIS LINE IS THE ISSUE 
        Request.QueryString["ID"] + div + GridView2.Rows[index].Cells[2].Text + div + DateTime.Now.ToString() + div + GridView2.Rows[index].Cells[3].Text + ((System.Web.UI.WebControls.TextBox)(GridView2.Rows[index]Cells[1].FindControl("the name of the text box")).Text /*this is the cell that contains the textbox*/+ "');", con); 

       } 
      } 


      catch (Exception ee) 
      { 
       string message = ee.Message; 
      } 
     } 

注:1在ASPX:CommandArgument='<%#((GridViewRow)Container).RowIndex%>'

2- use RowCommand event for the grid view.