2014-03-06 16 views
0

我有一个LinkBut​​ton和一个标签Datalist。当我单击该数据记录时,我需要获取特定记录的记录的主键值。如何实现这一目标?在asp.net中的数据列表中检索记录的主键值?

<asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1" OnSelectedIndexChanged="DataList1_SelectedIndexChanged" RepeatColumns="1" ShowFooter="False" ShowHeader="False" Width="587px" style="margin-right: 25px; margin-bottom: 116px"> 
    <ItemTemplate> 
     &nbsp;<table style="width:100%;"> 
      <tr> 
       <td> 
        <asp:LinkButton ID="LinkButton1" runat="server" Font-Bold="True" Font-Names="Tahoma" Font-Size="Medium" Font-Strikeout="False" ForeColor="Black" OnClick="LinkButton1_Click" Text='<%# Eval("title") %>'></asp:LinkButton> 
       </td> 
       <td> 
       &nbsp;</td> 
      </tr> 
      <tr> 
       <td> 
        <asp:Label ID="contentLabel" runat="server" Font-Names="Tahoma" Text='<%# Eval("content") %>' /> 
       </td> 
       <td> 

        <br /> 

       </td> 
      </tr> 
     </table> 
    </ItemTemplate> 
</asp:DataList> 

回答

0

您需要返回查询中的主键。然后将主键分配给一列。那么你可以从代码访问此列,其价值背后等

如:

      <td> 
           <asp:Label ID="id" runat="server" Font-Names="Tahoma" Text='<%# Eval("id") %>' /> 
          </td> 
+0

它的工作原理,但如果我不想显示数据的主键是什么。 仍然隐藏标签是一个解决方案,但它不是一个好的做法,再加上我认为它不安全(我认为我不是expat在那)。 还有什么建议吗? – Huzaim

0

你应该在你的DataList控件的定义中的DataKeyNames。

<asp:DataList ID="DataList1" runat="server" DataKeyNames="ID" ... /> 

然后在代码隐藏,你可以找回:

protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e) 
{ 

    if (e.CommandName == "Edit") 
    { 

     string strId = DataList1.DataKeys[e.Item.ItemIndex].ToString(); 

    } 

} 
相关问题