2011-07-11 116 views
1

我從GridView中獲取數據上rowcommand事件由下面的代碼網格視圖所選行的數據

protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "editproject") 
    { 
     string rowindex = e.CommandArgument.ToString(); 
     int index = int.Parse(rowindex); 
     GridViewRow row = GridView2.Rows[index]; 
     Label6.Text = row.Cells[1].Text; 
    } 
} 

,但它會給就是在gridview的第i行。如何能得到明顯的領域的唯一數據該字段不可見但綁定到gridview。

回答

2

您無法獲取您設置爲不可見的值,因爲這些值未在客戶端呈現,無法在服務器端抓取。

或者,您可以將該值存儲在隱藏字段中,然後您可以從隱藏字段中獲取該值。

+0

所以沒有辦法獲得的價值。 –

+0

一種方法是我可以獲取所選行的datakeyvalue並使用linq查詢查詢數據庫並獲取values.i認爲會有更簡單的方法 –

+0

@saurabh DataKeys'可以保存多個值,您可以選擇添加列有 – V4Vendetta

0

您可以獲取不可見的綁定元素,但可以從數據源獲取值。例如,將數據保存到分配給網格的數據表中。將此數據表存儲在視圖狀態和行命令中獲取數據通過數據表檢索值

0

你可以得到一個命令式的按鈕,它在gridview中是不可見的,只要看看這個:--- 按鈕的錯誤可見性需要你改變屬性EnableEventValidation="False"default.aspx

private void grd_bind() 
{ 
    SqlDataAdapter adp = new SqlDataAdapter("select* from tbbook", ConfigurationManager.ConnectionStrings["cn"].ConnectionString); 

    DataSet ds = new DataSet(); 
    adp.Fill(ds); 
    GridView1.DataSource = ds; 
    GridView1.DataBind(); 
} 

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     LinkButton lk = (LinkButton)(e.Row.Cells[5].Controls[0]); 
     e.Row.Attributes["Onclick"] = ClientScript.GetPostBackClientHyperlink(lk, ""); 
    } 
} 

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    TextBox1.Text = GridView1.SelectedRow.Cells[0].Text; 
    TextBox2.Text = GridView1.SelectedRow.Cells[1].Text; 
    TextBox3.Text = GridView1.SelectedRow.Cells[2].Text; 
    TextBox4.Text = GridView1.SelectedRow.Cells[3].Text; 
    TextBox5.Text = GridView1.SelectedRow.Cells[4].Text; 
} 

的頁面指令N的default.aspx頁面,設置EnableEventValidation

<%@ Page Language="VB" EnableEventValidation="false" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %> 
1
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) 
{ 
    MessageBox.Show(dataGridView1.SelectedRows[0].Cells[0].Value.ToString()); 
}