我一直努力遵循這樣的回答:How to implement full row selecting in GridView without select button?製作中的GridView整行可點擊
但我還是略顯混亂。在遵循這個問題之後,我的行現在可以點擊了。但是我怎麼實現它來點擊後做點什麼?目前,我用一個按鈕做什麼,我需要每行數據庫:
下面是在.aspx代碼:
<Columns>
<asp:ButtonField Text = "Click Me" CommandName = "Clicked" ButtonType = "Button" />
...other columns stuff
</Columns>
C#代碼背後:
protected void RowCommand(object sender, GridViewCommandEventArgs e)
{
//if button is clicked
if (e.CommandName == "Clicked")
{
//go find the index on the gridview
int selectedIndex = MsgInbox.SelectedIndex;
if (int.TryParse(e.CommandArgument.ToString(), out selectedIndex))
{
//do something with database
}
現在,精美的作品。但是,我不希望按鈕是可點擊的,我希望整行都是可點擊的。我知道這是目前錯誤的,但是這是我到目前爲止的代碼:
的.aspx代碼
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="SelectRow" runat="server" ForeColor="red" CommandName="Clicked"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
C#代碼:
protected void Gridview_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes["onmouseover"] = "this.style.cursor='pointer';this.style.textDecoration='underline';";
e.Row.Attributes["onmouseout"] = "this.style.textDecoration='none';";
var selectButton = e.Row.FindControl("SelectRow") as Button;
e.Row.Attributes["onclick"] = ClientScript.GetPostBackEventReference(selectButton, "");
我得到一個簡單的空指針異常當我這樣做時,但我並不真正熟悉e.Row.Attributes,所以我真的不知道這是哪裏失敗,以及我需要做什麼來添加數據庫邏輯。
謝謝
哪一行特別是拋出一個異常?什麼樣的例外?注意你應該使用'作爲LinkButton'而不是'作爲Button',因爲'SelectRow'是一個'LinkButton'。 –
哦,甜美!現在我沒有錯誤,現在我做了一個LinkButton。你知道我應該在哪裏輸入數據庫代碼的邏輯(例如,單擊這一行並對數據庫執行此操作)?現在,當我點擊它時,沒有任何反應,因爲我不確定在哪裏/如何添加代碼。謝謝! – Kevin
處理GridView的RowCommand事件。 –