0

IpInterfaceUC UserControl

<div id="dvChannel" runat="server">
        <asp:GridView ID="gvChannelUC" 
            OnRowCommand="gvChannelUC_RowCommand"
            OnSelectedIndexChanged="gvChannel_SelectedIndexChanged"
        />
</div>

IPServicesページCodeBehind

if (!IsPostBack){
}else
{    
 string str_btn = Request.Form.Keys[Request.Form.Keys.Count - 1].ToString();
 handleClick(str_btn);
}

質問

常にstr_btnがnullと表示されます。[ボタン]をクリックすると、ボタンのIDが表示されますが、GridViewで[選択]をクリックすると、str_btnがnullと表示されます。[選択]をクリックすると、GridViewのIDが表示されます。

説明してくれてありがとう。

4

2 に答える 2

0

nameグリッドビューに属性を付けてみてくださいname="yourGridName"

<div id="dvChannel" runat="server" name="yourGridName">
        <asp:GridView ID="gvChannelUC" name="yourGridName"
            OnRowCommand="gvChannelUC_RowCommand"
            OnSelectedIndexChanged="gvChannel_SelectedIndexChanged"
        />
</div>
于 2013-01-07T04:37:08.583 に答える
0

私の理解では、ページ/分離コード (.aspx) でグリッド イベント処理 (.ascx) が必要です。

userControl でイベントハンドラを宣言する

 public event EventHandler<EventArgs>  RaiseSelectedIndexChanged=delegate {};

userControl.cs で userControl selectedindexchange イベントを処理する

   protected void gvChannel_SelectedIndexChanged(object sender, EventArgs e)
    {
        var raiseSelectedIndexChanged = RaiseSelectedIndexChanged ;
        if(raiseSelectedIndexChanged!=null)
        {
            raiseSelectedIndexChanged(sender, e);
        }
    }

aspxでuserControlを登録して使用します(すでに行っていることを願っています)このコードはaspxページに移動します

        <uc:userControl OnRaiseSelectedIndexChanged="OnRaiseSelectedIndexChanged"/>

aspx コード ビハインドでイベントを処理する

    protected void OnRaiseSelectedIndexChanged(object sender, EventArgs e)
    {
       //handle your event and put logic 
    }

私はそれを明確にすることを望みます、それがあなたを混乱させるかどうか私に知らせてください.

于 2013-01-07T05:12:40.323 に答える