Sur*_*har 4 .net asp.net datalist
在我的网络应用程序中,我有一个数据列表,我绑定一些图像.在datalist itemcommand事件中,我编写了一些未触发的代码,我的意思是itemcomand事件没有触发.你能帮我吗.这是我的源代码
DataList控件:
<asp:DataList ID="DLQuickVideos" runat="server" RepeatColumns ="2" CellPadding="0" CellSpacing="0" OnItemCommand="DLQuickVideos_ItemCommand" >
<ItemTemplate>
<asp:ImageButton ID="imgbtn" runat="server" ImageUrl='<%# "../Trailorvideos/"+ Eval("SnapShot") %>' CommandArgument='<%# Eval("video")+"|"+Eval("videoid") %>' CausesValidation="false" Width="111px" Height="83px" BorderStyle="double" BorderWidth="4px" BorderColor="#A70202" />
</ItemTemplate>
</asp:DataList>
Run Code Online (Sandbox Code Playgroud)
事件处理程序:
protected void DLQuickVideos_ItemCommand(object source, DataListCommandEventArgs e)
{
try
{
string eval = e.CommandArgument.ToString();
int k = eval.IndexOf("|");
videoname = eval.Substring(0, k);
videoid = eval.Substring(k + 1);
string move = Request.QueryString["movie"].ToString();
if (Request.Browser.Browser == "IE")
{
dvplayer.InnerHtml = "<object id='player' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' name='player' width='500' height='350'> <param name='movie' value='player-viral.swf' /> <param name='allowfullscreen' value='true' /> <param name='allowscriptaccess' value='always' /> <param name='flashvars' value='file=~/User/Trailorvideos/" + videoname + "&autostart=true' /> <p><a href='http://get.adobe.com/flashplayer'>Get Flash</a> to see this player.</p> </object>";
}
else
{
dvplayer.InnerHtml = "<object type='application/x-shockwave-flash' data='player-viral.swf' width='500' height='350'> <param name='movie' value='player-viral.swf' /> <param name='allowfullscreen' value='true' /> <param name='allowscriptaccess' value='always' /> <param name='flashvars' value='file=~/User/Trailorvideos/" + videoname + "&autostart=true' /> <p><a href='http://get.adobe.com/flashplayer'>Get Flash</a> to see this player.</p> </object>";
}
GetQuickList(videoid);
}
catch (Exception ex)
{
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码.cs代码
您已发布这是您的页面加载事件:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) //this IF statement is what prevents re-binding on PostBack
{
GetQuickList(videoid, moviename);
}
else
{
GetQuickList(videoid, moviename)
}
}
Run Code Online (Sandbox Code Playgroud)
这不行.你不能在回发后数据绑定.否则,将取消任何挂起的事件处理程序请
您必须删除此if语句的else部分.
你什么时候绑定DataList?如果 DataList 绑定在 PageLoad 上,但您没有处理 PostBack,则所有附加的事件处理程序都将在 DataList 重新绑定时丢失。在这种情况下永远不会引发 ItemCommand 事件。
确保您的 Page_Load 方法的结构如下:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) //this IF statement is what prevents re-binding on PostBack
{
//Bind DataList
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码将确保不会在 PostBack 上重新创建 DataList。
看看这篇涵盖 Page.IsPostBack 属性的MSDN 文章
| 归档时间: |
|
| 查看次数: |
11462 次 |
| 最近记录: |