我如何获得在datalist中点击的id

时间:2013-08-30 21:31:21

标签: asp.net

我在数据库中有一个表。该表包含列名Answer_Id和Answer_Content.And我在datalist中显示Answer_Content。我的aspx代码如下;

<asp:DataList ID="datalistcevaplar" runat="server" Width="740px" OnItemCommand="datalistcevaplar_ItemCommand" >
        <ItemTemplate>
<div class="divcvpicerik">
    <asp:Label ID="lblcvpicerik" runat="server" Text='<%# Eval("Answer_Content") %>'></asp:Label>
</div>
</ItemTemplate>
</asp:DataList>

现在我必须得到Answer_Id,我点击datalist中的Answer_Content.Please help

3 个答案:

答案 0 :(得分:3)

  

Answer_Contentlinkbutton。上面的代码是错误的   Answer_content不是标签,而是 LinkBut​​ton

您可以使用不可见的Label来存储ID,这很容易。处理LinkButton的ckick事件并使用NamingContainerFindControl

ASPX:

<asp:DataList ID="datalistcevaplar" runat="server" Width="740px" OnItemCommand="datalistcevaplar_ItemCommand" >
 <ItemTemplate>
   <div class="divcvpicerik">
    <asp:Label ID="LblID" Visible="false" runat="server" Text='<%# Eval("Answer_Id") %>'>
    </asp:Label>
    <asp:LinkButton id="LnkAnswer"
       Text='<%# Eval("Answer_Content") %>'
       OnCick="LnkClicked" 
       runat="server" />
    </div>
</ItemTemplate>
</asp:DataList>

代码隐藏:

protected void LnkClicked(Object sender, EventArgs e)
{
    LinkButton btn = (LinkButton) sender;
    DataListItem item = (DataListItem) btn.NamingContainer;
    Label lblId = (Label) item.FindControl("LblID");
    string ID = lblId.Text;
}

修改或使用Garrison Neely提到的CommandArgument的{​​{1}}。

LinkButton

然后你可以这样得到它:

<asp:LinkButton id="LnkAnswer"
       Text='<%# Eval("Answer_Content") %>'
       CommandArgument='<%# Eval("Answer_Id") %>'
       OnCick="LnkClicked" 
       runat="server" />

答案 1 :(得分:1)

你可以这样做

<asp:DataList ID="datalistcevaplar" runat="server" Width="740px" OnItemCommand="datalistcevaplar_ItemCommand" DataKeyField="Answer_Id">
<ItemTemplate>
<div class="divcvpicerik">
<asp:LinkButton CssClass="lnkcss" ID="lnkDeactive" runat="Server" CommandName="Answer"
 Text='<%# Eval("Answer_Content") %>'></asp:LinkButton>
</div>
</ItemTemplate>
</asp:DataList>

在此,您必须设置DataKeyField,以便您可以在ItemCommand事件上获取该ID

现在,在datalist的Item Command事件中执行这样的代码。

protected void datalistcevaplar_ItemCommand(object source, DataListCommandEventArgs e)
    {

        if (e.CommandName.Equals("Answer"))
        {
              int AnswerId = Convert.ToInt32(DLUsers.DataKeys[e.Item.ItemIndex].ToString());

        }       
    }

现在使用此代码,您可以获得Answer_Id或Datalist的任何Id字段。试试这个。

答案 2 :(得分:0)

int count = DataList1.Items.Count;
            for(int i=0;i<count;i++)
            {
            Label lbl = DataList1.Items[i].FindControl("label1") as Label;
            string labeltext = lbl.Text;
            TextBox txttest = new TextBox();
            txttest.Text = labeltext;
            }