2014-01-19 2 views
0

Я использую DataList для реализации пользовательского подкачки, и кнопка щелчка работает локально, но после ее развертывания на моем сервере godaddy кнопка, на которой отображается __doPostBack, не определена ошибкаASP.NET - __doPostBack не определена ошибка из DataList ItemCommand event

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); 
    } 

Я попробовал решение, упомянутые в других аналогичных нитей, но никто не работал.

Я вижу, что scout doPostback уже присутствует в представлении источника страницы. Я использую VS 2010

+0

Значит, вы определили __doPostBack ?? –

+0

Я не указал его явно в usercontrol. Я попробовал код Page.ClientScript.GetPostBackEventReference (это, string.Empty); внутри события PageLoad UserControl, но не работает. – user3211614

+0

Каков нормальный способ определения doPostBack из usercontrol? – user3211614

ответ

1

Вам нужно добавить Page.ClientScript.GetPostBackEventReference(this, string.Empty); к сообщению кнопки OnClick. Поэтому вы должны сделать это в dlPager_ItemDataBound, где вы найдете LinkButton от e.Item.FindControl. Ваш код может выглядеть так:

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); 
    } 
} 
+0

Я пробовал код dlPager_ItemDataBound, но не повезло – user3211614

+0

Убедитесь, что у вас есть это в вашей разметке: 'OnItemDataBound =" dlPager_ItemDataBound "'. Образец кода выше проверен и работает. – afzalulh

+0

У меня есть OnItemDataBound = "dlPager_ItemDataBound" разметка на месте, но не уверен, почему это не работает – user3211614

Смежные вопросы