簡體   English   中英

ASP.NET-未定義__doPostBack來自DataList ItemCommand事件的錯誤

[英]ASP.NET - __doPostBack is not defined error from DataList ItemCommand event

我正在使用DataList進行自定義分頁實現,並且按鈕單擊在本地有效,但是在將其部署到我的Godaddy服務器中后,顯示__doPostBack的按鈕單擊未定義錯誤

DataList代碼在Usercontrol中

           <asp:DataList CellPadding="1"                        RepeatDirection="Horizontal" runat="server" ID="dlPager"                       onitemcommand="dlPager_ItemCommand">
             <ItemTemplate>
                   <asp:LinkButton Enabled='<%#Eval("Enabled") %>' 
                       runat="server" ID="lnkPageNo" 
                       Text='<%#Eval("Text") %>' 
                       CommandArgument='<%#Eval("Value") %>' 
                       CommandName="PageNo" 
                       BorderStyle="Solid" 
                       BorderWidth="2px" 
                       Font-Bold="True" 
                       Font-Size="Medium" 
                       ForeColor="White" 
                       BackColor="#0066FF" 
                       BorderColor="#66FF33"   
                       Height="20px" 
                       CausesValidation="False">
                   </asp:LinkButton>
            </ItemTemplate></asp:DataList>

頁面的查看源顯示,

  <table id="ctl00_cphBody_ctl00_dlPager" cellspacing="0" cellpadding="1" CausesValidation="False" border="0" style="border-collapse:collapse;">
<tr>
    <td>
                   <input type="button" name="ctl00$cphBody$ctl00$dlPager$ctl00$lnkPageNo" value="1" id="ctl00_cphBody_ctl00_dlPager_ctl00_lnkPageNo" disabled="disabled" style="color:White;background-color:#0066FF;border-color:#66FF33;border-width:2px;border-style:Solid;font-size:Medium;font-weight:bold;height:20px;" />
            </td><td>
                   <input type="button" name="ctl00$cphBody$ctl00$dlPager$ctl01$lnkPageNo" value="2" onclick="javascript:__doPostBack(&#39;ctl00$cphBody$ctl00$dlPager$ctl01$lnkPageNo&#39;,&#39;&#39;)" id="ctl00_cphBody_ctl00_dlPager_ctl01_lnkPageNo" style="color:White;background-color:#0066FF;border-color:#66FF33;border-width:2px;border-style:Solid;font-size:Medium;font-weight:bold;height:20px;" />
            </td><td>
                   <input type="button" name="ctl00$cphBody$ctl00$dlPager$ctl02$lnkPageNo" value="3" onclick="javascript:__doPostBack(&#39;ctl00$cphBody$ctl00$dlPager$ctl02$lnkPageNo&#39;,&#39;&#39;)" id="ctl00_cphBody_ctl00_dlPager_ctl02_lnkPageNo" style="color:White;background-color:#0066FF;border-color:#66FF33;border-width:2px;border-style:Solid;font-size:Medium;font-weight:bold;height:20px;" />
            </td>
</tr>

用戶控制碼后面

protected void dlPager_ItemCommand(object source, DataListCommandEventArgs e)
{
    if (e.CommandName == "PageNo")
    {
        GetData(Convert.ToInt32(e.CommandArgument));
    }
}

頁面加載是

    if (!Page.IsPostBack)
    {         
        GetData(1);  
    }

我嘗試了其他類似線程中提到的解決方案,但沒有一個起作用。

我可以看到頁面的視圖源中已經存在doPostback scipt。 我正在使用VS 2010

您需要添加Page.ClientScript.GetPostBackEventReference(this, string.Empty); 鏈接按鈕的OnClick事件。 因此,您必須在dlPager_ItemDataBound執行此dlPager_ItemDataBound ,在這里您可以從e.Item.FindControl找到LinkButton 您的代碼可能如下所示:

protected void dlPager_ItemDataBound(object sender, DataListItemEventArgs e)
{
    var lb = e.Item.FindControl("lnkPageNo") as LinkButton;
    if (lb != null)
    {
        lb.Attributes["onclick"] = Page.ClientScript.GetPostBackEventReference(this, string.Empty);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM