2011-04-06 94 views
2

大家好我有一個GridView(GridView1)我已經添加一列,然後插入一個按鈕:在GridView的ASP.NET C#代碼按鈕

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
      AutoGenerateColumns="False" DataSourceID="ObjectDataSource2" 
      onselectedindexchanged="GridView1_SelectedIndexChanged" Width="798px"> 
      <Columns> 
       ..... 
       <asp:ButtonField ButtonType="Button" CommandName="cmdFlag" Text="Flag" /> 
      </Columns> 
     </asp:GridView> 

基本上按鈕的點擊我想運行一個SQL更新但似乎不能點擊按鈕進入C#並添加查詢。我可以在C#中找到該頁面,但不確定要爲該方法編寫什麼內容。

繼承人的C#代碼:

void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "cmdFlag") 
     { 
     con.Open(); 

     cmd = new SqlCommand("UPDATE Comments SET Flagged = '" + "Yes" + "'", con); 

     cmd.ExecuteNonQuery(); 


     } 

    } 

它什麼都不做,雖然。基本上我需要它來查看該行,如果單擊了標記的按鈕,請在標記下將註釋更新爲「是」。

回答

2

你不會得到一個直接的事件。您需要在RowCommand事件上編寫代碼。

void GridView1_RowCommand(Object sender, GridViewCommandEventArgs e) 
{ 
    if(e.CommandName=="cmdFlag") 
     { 
     //Write code update database 
    } 
} 

此外,您還需要修改GridView控件。添加這樣的事件。

onrowcommand="GridView1_RowCommand" 

,您可以得到更多的信息here

+0

你好感謝。你能再看看我的帖子嗎?我已經更新了它的更多信息。 – Mark 2011-04-06 09:53:14

+0

我修改了答案:) – Anuraj 2011-04-06 09:58:34

+0

感謝隊友現在做了一些事情,但更新了所有的行我想我需要一個WHERE語句只是不確定如何寫它在哪裏行只有任何想法?如果有幫助,我有一個Comment_ID字段。 – Mark 2011-04-06 10:17:53

0

你已經忘了對你的GridView添加OnRowCommand="GridView1_RowCommand",這就是爲什麼它不點火的RowCommand事件。

<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand" AllowPaging="True" 
     AutoGenerateColumns="False" DataSourceID="ObjectDataSource2" 
     onselectedindexchanged="GridView1_SelectedIndexChanged" Width="798px"> 
0

如果您想將ID添加到通過這樣

GridView1.RowCommand += new GridViewCommandEventHandler(GridView1_RowCommand); 

註冊在你的代碼隱藏文件的事件處理程序,並在您添加此aspx頁面

OnRowCommand="GridView1_RowCommand" 
0

在您的WHERE聲明中使用它,您可以將其放入CommandArgument,如

<asp:ButtonField ButtonType="Button" CommandName="cmdFlag" Text="Flag" CommandArgument='<%# Eval("Comment_ID") %>' /> 

然後在你的代碼可以從

var id = e.CommandArgument.ToString(); 

更新得到它:剛更新爲我增加了它,但它不是做我想要的代碼

+0

Hiya我添加了你放的代碼,但是我得到了錯誤:Eval(),XPath()和Bind()等數據綁定方法只能在數據綁定控件的上下文中使用。 – Mark 2011-04-06 10:46:26

+0

嘗試用CommandArgument =「Comment_ID」替換CommandArgument ='<%#Eval(「Comment_ID」)%>' – 2011-04-06 12:52:43