2012-07-24 66 views
0

我有一个像下面的网格。如何在ASP.net中获得不可变的gridview单元格值?

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" s          
            onrowcommand="GridView1_RowCommand"> 
    <Columns> 
     <asp:ButtonField DataTextField="Name" HeaderText="Name" /> 
     <asp:BoundField DataField="ArrDate" DataFormatString="{0:MM/dd/yyyy}" 
           HeaderText="Arr Date" /> 
     <asp:BoundField HeaderText="Dep Date" DataField="DepDate" 
          DataFormatString="{0:MM/dd/yyyy}" /> 
     <asp:BoundField HeaderText="Mail" DataField="Mail" /> 
     <asp:BoundField HeaderText="Status" DataField="Status" /> 
     <asp:BoundField DataField="ResId" HeaderText="ResId" Visible="False" />           
    </Columns> 
</asp:GridView> 

在代码背后: -

try 
{ 
    string text = GridView1.Rows[2].Cells[5].Text; 
    ScriptManager.RegisterStartupScript(this, GetType(), "Message", "alert('ResId = " + text + ".');", true);    
} 
catch { } 

现在消息显示 - REGID =。

我无法获得价值。所以我将RedId BoundField更改为vissible。现在我获得了价值。

即RegId = 6。

我现在有两期 -

1)如何获得在非Vissible列的值的RegID。 2)我怎么知道我单击行值...唯一BZS我可以在代码中改变ROWVALUE ..

string text = GridView1.Rows[ROWVALUE].Cells[5].Text; 

请请帮助我。

回答

0

这当然不是正确的做法。你可能想看看使用DataKeys来实现这一点。使用当前的方法,当您向网格添加新列时,代码将失败。

  1. 添加DataKeys属性里面你的RegID列上你的GridView
  2. 参考你的GridView datakey当前行中的代码隐藏这样

    int regId= Convert.ToInt32(YourGridview.DataKeys[rowIndex]["RegId"].ToString()); 
    
+0

或使用模板列,行命令,FindControl已。 示例:https://yasserzaid.wordpress.com/2011/11/13/find-control-in-gridview-rowcommand-event/ http://stackoverflow.com/questions/1665066/gridview-template-how-对抓斗数据从选择的行 – imAbhi 2012-07-24 18:17:39

相关问题