我在数据库中有一个表。该表包含列名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
答案 0 :(得分:3)
Answer_Content
是linkbutton
。上面的代码是错误的Answer_content
不是标签,而是 LinkButton
您可以使用不可见的Label
来存储ID,这很容易。处理LinkButton
的ckick事件并使用NamingContainer
和FindControl
。
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;
}