我正在使用中繼器控件創建一個只有幾行和幾列的表格。在Repeater_ItemCommand上,我想在後面的代碼中選擇單擊的行並將其存儲在會話中。我該怎麼做呢 ?如何從代碼中的中繼器控制中獲取全行?
當我點擊該行時,我的e.Item.DataItem將變爲NULL。我正在使用<%#DataBinder.Eval(Container.DataItem,「FILE_NAME」)%>綁定我的值在asp.net
我不能使用LINQ。
感謝 韋達
我正在使用中繼器控件創建一個只有幾行和幾列的表格。在Repeater_ItemCommand上,我想在後面的代碼中選擇單擊的行並將其存儲在會話中。我該怎麼做呢 ?如何從代碼中的中繼器控制中獲取全行?
當我點擊該行時,我的e.Item.DataItem將變爲NULL。我正在使用<%#DataBinder.Eval(Container.DataItem,「FILE_NAME」)%>綁定我的值在asp.net
我不能使用LINQ。
感謝 韋達
從我瞭解直放站,它不應該像使用。爲什麼不使用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>
您可以使用按鈕'/ 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
}
這是當然的,一些實施例的代碼。
我想選擇整個行,我沒有使用服務器控件。在TD中顯示文本。 – Zeus
據我所知'Repeater.ItemCommand'事件_Occurs當一個**按鈕**在Repeater控件中被點擊時._你可以在每個''內使用帶有CSS樣式'display:block'的'LinkButton'參數和Text屬性。 –
這裏是中繼
<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");
}
}
Label item =(Label)e.Item.FindControl(「label1」);爲我工作。它節省了我很多時間。 @atbebtg謝謝你的回答。 :) – SarangK
我很想,但它從我hand..I的必須使用中繼器 – Zeus
@伊萬:你爲什麼說中繼器「不應該這樣使用」? –
@Shai Cohen:從我讀過的內容來看,它用於數據呈現而不是數據操作。 MSDN似乎同意:「Repeater控件沒有內置選擇功能或編輯支持」(http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.repeater(v = vs.100).aspx) –