我正在使用转发器控件来创建一个包含很少行和列的表。在Repeater_ItemCommand上我想在后面的代码中选择单击的行并将其存储在会话中。我该怎么做?
当我单击该行时,我的e.Item.DataItem将变为NULL。我正在使用<%#DataBinder.Eval(Container.DataItem,“FILE_NAME”)%>在asp.net中绑定我的值
我不能使用LINQ。
由于 VED
答案 0 :(得分:2)
以下是转发器的代码
<asp:Repeater ID="Repeater1" runat="server"
onitemcommand="Repeater1_ItemCommand">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li>
<asp:LinkButton ID="btnDeleteComment" runat="server" Text="Delete" CommandName="DeleteComment" CommandArgument=<%#Eval("myId") %>></asp:LinkButton>
<asp:Label ID="Label1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "FileName")%>'></asp:Label>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
以下是
背后代码的代码public partial class _Default : System.Web.UI.Page
{
public class myObject
{
public string FileName { get; set; }
public int myId { get; set; }
}
protected void Page_Load(object sender, EventArgs e)
{
List<myObject> myList = new List<myObject>();
myList.Add(new myObject {myId = 1, FileName = "one" });
myList.Add(new myObject { myId = 2, FileName = "two" });
myList.Add(new myObject { myId = 3, FileName = "three" });
Repeater1.DataSource = myList;
Repeater1.DataBind();
}
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
Label item = (Label)e.Item.FindControl("label1");
}
}
答案 1 :(得分:0)
根据我对Repeater的了解,不应该像那样使用它。为什么不直接使用GridView和TemplateField?
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="KeyColumnName"
DataSourceID="SqlDataSource1">
<Columns>
<asp:TemplateField>
...Same template as in repater...
</asp:TemplateField>
</Columns>
</asp:GridView>
答案 2 :(得分:0)
您可以使用按钮'/ LinkButtons'/ etc。 CommandArgument字段。
<table>
<asp:Repeater ID="someRepeater" OnItemCommand="someRepeater_ItemCommand" runat="server">
<HeaderTemplate>
<tr><th>
File Name Header
</th></tr>
</HeaderTemplate>
<ItemTemplate>
<tr><td>
<asp:LinkButton Text="File Name Item" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "FILE_NAME")%>' Style="display: block" runat="server" />
</td></tr>
</ItemTemplate>
</asp:Repeater>
</table>
在代码背后:
protected void someRepeater_ItemCommand(object Sender, RepeaterCommandEventArgs e)
{
Session["FILE_NAME"] = e.CommandArgument; //Here you have your FILE_NAME
}
这当然是一些示例代码。