2011-08-02 9 views
0

私は私がリピータはItemコマンド

は、私は両方のItemCommandイベントやリンクボタンの両方がポストバック

を作成する]をクリックしようとしたコマンドのプロパティをしているのLinkBut​​tonとRepeaterコントロールを持っているという点で、更新パネルを持って戻って更新パネルで記事を作成します

ここその

<asp:UpdatePanel ID="upFC" runat="server" UpdateMode="Always" ChildrenAsTriggers="true"> 
     <ContentTemplate> 
    <asp:Repeater ID="rptFCItem" runat="server" OnItemDataBound="rptFCItem_ItemDataBound" OnItemCommand="rptFCItem_ItemCommand" EnableViewState="true"> 
        <ItemTemplate> 
         <asp:LinkButton ID="lnkElement" runat="server" OnClick="lnkCurrent_Click" CommandName="Element"></asp:LinkButton> 
        </ItemTemplate> 
       </asp:Repeater> 
    </ContentTemplate> 

、次のコードは、サーバー側のコード

あります
protected void lnkCurrent_Click(object sender, EventArgs e) 
    { 
     BindFC(Element, true); 
    } 


protected void rptFCItem_ItemDataBound(object sender, RepeaterItemEventArgs e) 
    { 
     if (e.Item.ItemIndex >= 0) 
     { 
      LinkButton lnkElement = (LinkButton)e.Item.FindControl("lnkElement"); 
      if (lnkElement != null) 
      { 
       lnkElement.Text = (e.Item.ItemIndex+1).ToString(); 
      } 
     } 
    } 

protected void rptFCItem_ItemCommand(object source, RepeaterCommandEventArgs e) 
    { 
     //some code here 
    } 

ただし、itemcommand workまたはclickイベントは、更新パネルasyncで完全なポストバックを作成することはできません。

誰にでも解決策がありますか?あなたの上に掲示コードで

よろしく、

Jalpesh

+0

ページにJavaScriptエラーがありますか?あなたは、アヤックスがどんなリクエストをしていると確信していますか? –

+0

[私が見つけた](http://forums.asp.net/t/1029795.aspx/1/10?Problems+with+Repeater+ItemCommand+Event+and+UpdatePanel+Triggers)からは、アップデートパネルのバグです更新モードに関する。 'updatemode =" conditional "'ならば動作しますか? [その他の参考文献](http://forums.asp.net/p/580720/1909340.aspx)と[さらに読む](http://msdn.microsoft.com/en-us/library/y200hyx2%28vs。 71%29.aspx)。 –

+0

私は条件付きと常に両方を試していました –

答えて

0

はOnItemCommand =「rptFlashCardItem_ItemCommand」の背後にあるコードで

としてマークアップでイベントを登録した、名前は「rptFCItem_ItemCommand」と異なり、 。この既存のコードはコンパイル時にエラーを出しますか?はいの場合は、名前が一致しない可能性があります。

+0

それはちょうどタイプミスです..コードではすべてが良いです –

+0

私は問題を修正しました –

0

リピーターをリストビューに置き換えると、それは機能します。

<asp:UpdatePanel ID="upFC" runat="server" UpdateMode="Always" ChildrenAsTriggers="true"> 
     <ContentTemplate> 
      <asp:ListView ID="rptFCItem" runat="server" OnItemDataBound="rptFCItem_ItemDataBound" 
       OnItemCommand="rptFCItem_ItemCommand" EnableViewState="true"> 
        <ItemTemplate> 
        <asp:LinkButton ID="lnkElement" runat="server" OnClick="lnkCurrent_Click" CommandName="Element"></asp:LinkButton> 
       </ItemTemplate> 
      </asp:ListView> 
     </ContentTemplate> 
    </asp:UpdatePanel> 

また、リピータイベントargsをListViewのバージョンに置き換える必要があります。

protected void rptFCItem_ItemDataBound(object sender, ListViewItemEventArgs e) 
{ 
    if (e.Item.DataItemIndex >= 0) 
    { 
     LinkButton lnkElement = (LinkButton)e.Item.FindControl("lnkElement"); 
     if (lnkElement != null) 
     { 
      lnkElement.Text = (e.Item.DataItemIndex + 1).ToString(); 
     } 
    } 
} 

protected void rptFCItem_ItemCommand(object source, ListViewCommandEventArgs e) 
{ 
    // some code here 
} 

私はそれがリピーターでは動作しない理由は、リピータが他のリスト型コントロールとしてそれらの内側に同じ命名構造を提供しないという事実に関係していと思います。

+0

私もリストビューを試してみました。それは動作しませんが、決して私はdatalistとそれを把握している。 –