A aleborg Medlem sedan jan. 2001 3 341 inlägg Frågan 19 okt. 2011 06:30 #1 Hej,
har ett mystiskt problem som jag inte får någon ordning på.
Jag har en listview i en updatepanel, listviewen fylls med knappar, dessa har en onclick, men för att innehållet ska köras i funktionen för onclick så måste jag klicka 2 ggr på knappen.
ASCX-filen:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="MyForm.WebUserControl1" %>
<asp:ScriptManager ID="smTest" runat="server" EnablePartialRendering="true" />
<asp:Panel ID="pnlOne" runat="server">
<asp:LinkButton ID="btnPopulate" runat="server" onclick="btnPopulate_Click" Text="Populate"></asp:LinkButton>
<asp:UpdatePanel ID="upPnl" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:ListView ID="gridOne" runat="server">
<LayoutTemplate>
<ul>
<li runat="server" id="itemPlaceholder"></li>
</ul>
</LayoutTemplate>
<ItemTemplate>
<li id="Li1" runat="server"><asp:LinkButton ID="LinkButton1" CommandArgument='<%# Eval("Name") %>' runat="server" Text='<%#Eval("Text") %>' OnClick="lbt1_Click" /> <%# Eval("Text") %></li>
</ItemTemplate>
</asp:ListView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnPopulate" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
</asp:Panel>
<asp:Panel ID="pnlTwo" runat="server" Visible="false">
<asp:Literal ID="litResult" runat="server"></asp:Literal>
</asp:Panel>
CS filen
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace MyForm
{
public partial class WebUserControl1 : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnPopulate_Click(object sender, EventArgs e)
{
List<MyItem> itmColl = new List<MyItem>();
itmColl.Add(new MyItem() { Name = "123", Text = "Item 1" });
itmColl.Add(new MyItem() { Name = "456", Text = "Item 2" });
itmColl.Add(new MyItem() { Name = "789", Text = "Item 3" });
itmColl.Add(new MyItem() { Name = "abc", Text = "Item 4" });
itmColl.Add(new MyItem() { Name = "def", Text = "Item 5" });
gridOne.DataSource = itmColl;
gridOne.DataBind();
}
protected void lbt1_Click(object sender, EventArgs e)
{
litResult.Text = ((LinkButton)sender).CommandArgument;
pnlOne.Visible = false;
pnlTwo.Visible = true;
}
}
public class MyItem
{
public string Name { get; set; }
public string Text { get; set; }
}
}
Någon som har nån idé om hur jag slipper dubbelklicka på knapparna i min ListView?
P plekanec Medlem sedan dec. 2010 27 inlägg Jag vet inte om detta löser problemet men jag brukar använda itemcommand när jag jobbar med repeaters..
Tex:
<asp:ListView runat="server" ID="lvTest">
<ItemTemplate>
<asp:LinkButton runat="server" CommandName="populate" CommandArgument='<%# Eval("xxx") %>' />
</ItemTemplate>
</asp:ListView>
protected void Page_Load(object sender, EventArgs e)
{
lvTest.ItemCommand += new EventHandler<ListViewCommandEventArgs>(lvTest_ItemCommand);
}
void lvTest_ItemCommand(object sender, ListViewCommandEventArgs e)
{
if (e.CommandName == "populate")
{
var xxx = e.CommandArgument;
}
}
A aleborg Medlem sedan jan. 2001 3 341 inlägg Har testat det med, men det gör ingen skillnad :(
P plekanec Medlem sedan dec. 2010 27 inlägg Blir det samma knas om du binder listan på oninit istället för på clickeventet?