2011-06-08 52 views
1

//代碼爲aspx。隱藏文件selected_indexchanged發射問題(甚至不能在任何情況下在網格視圖中打印單元格值)

<Columns> 
<asp:BoundField DataField="Name" HeaderText="Name" /> 
<asp:BoundField DataField="City" HeaderText="City" /> 
<asp:BoundField DataField="MobilePhone" 
    HeaderText="Mobile Phone" /> 
     <asp:ButtonField Text="Button" ButtonType="Button" CommandName="Select" /> 
</Columns> 
</asp:GridView> 
    <asp:Label ID="Label" runat="server" Text="Label"></asp:Label> 

//代碼()

protected void grid_SelectedIndexChanged(object sender, 
EventArgs e) 
{ 
int selectedRowIndex; 
selectedRowIndex = grid.SelectedIndex; 
GridViewRow row = grid.Rows[selectedRowIndex]; 
string name = row.Cells[0].Text; 
Label.Text = "You selected " + name + "."; 
} 

問:IAM甚至無法打印選定row.If任何人都可以幫助我解決這個問題。

回答

0

您必須使用RowCommand事件而不是SelectedIndexChanged事件。

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "Select") 
    { 
     GridViewRow row = ((GridViewRow)((Button)e.CommandSource).NamingContainer); 
     string name = row.Cells[0].Text; 
     Label.Text = "You selected " + name + "."; 
    } 
} 
+0

即使我無法打印選定的行,我已經完成了你所說的操作。 – Rohith 2011-06-08 16:04:19

+0

它應該工作,還有一些其他問題。 – 2011-06-09 02:58:44

0

你真的應該從底層數據項中獲取這個值。但是,如果由於某種原因,它一直是數據綁定後,該值被操縱,你需要得到該小區內控制的實際價值,那麼你可能想是這樣的:

protected void grid_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     GridViewRow row = (GridViewRow)grid.Rows[grid.SelectedIndex]; 
     string name = ((Label)row.Cells[1].Controls[1]).Text; 
     Label.Text = "You selected " + name + "."; 
    } 

,但..這是一個相當混亂的方式來實現這一點。另外「標籤」對於標籤來說是一個非常糟糕的名字。此外,你發佈的Cell [0]將成爲最有可能選擇按鈕的列,而不是具有你想要的值的列。而且,一旦你在正確的單元格中,就有3個控件,2個文字和一個正常綁定字段的標籤。控件[1]是第二個控件,它是標籤控件,它具有您正在查找的值。

相關問題