2013-01-07 57 views
0

IpInterfaceUC用戶控件無法通過代碼隱藏在用戶控件訪問GridView的事件

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

IPServices頁面代碼隱藏

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

問題

它總是顯示str_btn爲空。如果我點擊按鈕,它會顯示按鈕的ID。但是當我在GridView上點擊選擇時,它會顯示str_btn爲空。當我們點擊select時應該顯示GridView的ID。

感謝您的任何解釋。

+0

根據我的理解,您需要頁面/代碼隱藏(.aspx)上的網格事件處理(.ascx)。 – paritosh

+0

是的,你說得對。 – Brian

回答

0

嘗試給name屬性給你的gridview,即name="yourGridName"

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

你有任何解決方案,brother.Thanks – Brian

0

根據我的理解,您需要頁面/代碼隱藏(.aspx)上的網格事件處理(.ascx)。在用戶控件

聲明事件處理程序中userControl.cs

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

手柄用戶控件SelectedIndexChanged事件

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

寄存器和ASPX使用您的用戶控件(我希望你已經這樣做)這個代碼將去aspx頁面

 <uc:userControl OnRaiseSelectedIndexChanged="OnRaiseSelectedIndexChanged"/> 

在aspx代碼中處理事件後面

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

我希望我說清楚,讓我知道如果它讓你困惑。

+0

感謝您的回覆。)。我有一些問題。希望你能幫我找出它。謝謝。** var raiseSelectedIndexChanged = RaiseSelectedIndexChanged **。因爲它被使用在codebehind.May你重寫這段代碼。我認爲它不會在代碼隱藏;) – Brian

+0

我沒有得到你,請告訴我什麼是不工作或張貼您的示例代碼,以便我可以修改它。 – paritosh

+0

var raiseSelectedIndexChanged = RaiseSelectedIndexChanged;它沒有工作 – Brian

相關問題