1

我在数据库中有一个表。该表包含列名 Answer_Id 和 Answer_Content。我在数据列表中显示 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,我在数据列表中单击 Answer_Content。请帮助

4

3 回答 3

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 NeelyCommandArgumentLinkButton提到的 。

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

然后你可以通过这种方式得到它:

protected void LnkClicked(Object sender, EventArgs e)
{
    LinkButton btn = (LinkButton) sender;
    string ID = btn.CommandArgument;
}
于 2013-08-30T21:58:56.650 回答
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 字段。试试这个。

于 2013-08-31T04:54:53.307 回答
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;
            }
于 2019-03-26T11:55:12.187 回答