2011-02-12 43 views
1

当用户选择一行时,我尝试从gridview中获取所选元素的社会安全号(SSN)。gridview SelectedDataKey - 我使用这个权利吗?

   <asp:GridView ID="PeopleGrid" runat="server" AutoGenerateColumns="False" CellPadding="4" 
       ForeColor="#333333" GridLines="None" 
       onselectedindexchanged="GetDataForPerson" DataKeyNames="SSN"> 
       <AlternatingRowStyle BackColor="White" /> 

   <Columns> 
       <asp:CommandField ShowSelectButton="True" ButtonType="Button" SelectText="Select" /> 
       <asp:BoundField HeaderText="NameHeader" DataField="NameProp" /> 
       <asp:BoundField HeaderText="AddressHeader" DataField="PersAddressProp" /> 
       </Columns> 

protected void GetDataForPerson(object sender, EventArgs e) 
{ 
    var x= PeopleGrid.SelectedDataKey.Value.ToString() 

    } 

x应是选择的人的SSN,但PeopleGrid.SelectedDataKey为空。这里有什么问题?

这是我如何绑定数据:

PeopleGrid.DataSource = PeopleCollection; 
      PeopleGrid.DataBind(); 

PeopleCollection是人的集合。 类人包括SSN,NameProp,PersAddressProp

如果你想找到所选行 “SSN” 值,那么你需要使用GridView的DataKeys属性,像GridView1.DataKeys [ “your_SelectedDataKey_index”] [ “your_selected_row_index”]
+0

如果我的回答有帮助,请发表评论 – Student 2011-02-12 15:52:34

回答

1

。这是一个只读属性。

+0

PeopleGrid.SelectedDataKey [0]; - 这会抛出异常。 SelectedDataKey为空,因此我无法添加索引 – Ryan 2011-02-12 14:24:27