.NET專業人士在那裏的OnClick事件爲什麼一個按鈕內用戶控件不會發生
我有,我想一個問題,與大家分享,如果能夠得到一個忠告:
我加載用戶控件動態使用datalist。我爲從數據庫中獲得的每一行加載這個usercontrol,它可能是這個控件的30個不同實例。
當用戶點擊按鈕,我希望能夠得到這個特定的usercontrol的屬性的值,在我的理解,我留意usercontrol ID做到這一點,這就是爲什麼我想分配我的「自定義ID」到每個加載的控件,所以我將能夠找到它。 也許我錯過了一些東西,也許這不是最好的方式,我願意提供建議。 反正.....
用戶控件代碼隱藏:
public partial class SearchBullet : System.Web.UI.UserControl
{
public static int i = 0;
private string casterLOGO;
public string CasterLOGO
{
get { return casterLOGO; }
set { casterLOGO = value; }
}
private string casterNameSB;
public string CasterNameSB
{
get { return casterNameSB; }
set { casterNameSB = value; }
}
private string player1NameSB;
public string Player1NameSB
{
get { return player1NameSB; }
set { player1NameSB = value; }
}
private string player2NameSB;
public string Player2NameSB
{
get { return player2NameSB; }
set { player2NameSB = value; }
}
private string mapSB;
public string MapSB
{
get { return mapSB; }
set { mapSB = value; }
}
private string gameFrameSB;
public string GameFrameSB
{
get { return gameFrameSB; }
set { gameFrameSB = value; }
}
private string serieSB;
public string SerieSB
{
get { return serieSB; }
set { serieSB = value; }
}
private string race1SB;
public string Race1SB
{
get { return race1SB; }
set { race1SB = value; }
}
private string race2SB;
public string Race2SB
{
get { return race2SB; }
set { race2SB = value; }
}
private string castURLSB;
public string CastURLSB
{
get { return castURLSB; }
set { castURLSB = value; }
}
private string likeAmountSB;
public string LikeAmountSB
{
get { return likeAmountSB; }
set { likeAmountSB = value; }
}
private string qRYstring;
public string QRYstring
{
get { return qRYstring; }
set { qRYstring = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack == false)
{
i++;
this.PreRender += new EventHandler(Cast_PreRender);
this.ID = "Result" + i.ToString();
}
PlayButton.ID = i.ToString();
}
void Cast_PreRender(object sender, EventArgs e)
{
PlayerName1.Text = Player1NameSB;
PlayerName2.Text = Player2NameSB;
CasterName.Text = CasterNameSB;
ImageRace1.ImageUrl = Race1SB;
ImageRace2.ImageUrl = Race2SB;
Map.Text = MapSB;
GameFrame.Text = GameFrameSB;
LikeAmount.Text = LikeAmountSB;
CasterLOGOIMG.ImageUrl = CasterLOGO;
PlayButton.AlternateText = "yay";
}
protected void PlayButton_Click1(object sender, ImageClickEventArgs e)
{
Image img = (Image)sender;
string tt = img.AlternateText;
int j = 0;
Response.Redirect("default2.aspx");
// lb.Text = img.ClientID;
}
}
aspx頁面:
<asp:DataList ID="WatchLaterDL" runat="server" DataSourceID="SDSWatchLater" RepeatColumns="1">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<Search:Bullet runat="server" EnableViewState="false" ID="SearchResults" Player1NameSB='<%#Bind("Player_Name") %>'
Player2NameSB='<%#Bind("Expr1") %>' CasterNameSB='<%#Bind("Caster_Name") %>'
Race1SB='<%#Bind("Race_1") %>' Race2SB='<%#Bind("Race_2") %>' MapSB='<%# Bind("Map")%>'
GameFrameSB='<%#Bind("Game_Frame") %>' LikeAmountSB='<%#Bind("Like_Amount") %>'
CastURLSB='<%#Bind("Cast_URL") %>' CasterLOGO='<%#Bind ("Caster_LOGO") %>' />
</ItemTemplate>
<SeparatorTemplate>
<br />
</SeparatorTemplate>
</asp:DataList></div>
的問題是,這樣做後,當我點擊按鈕什麼也沒有發生,我的意思是,當調試時,我從來沒有進入OnButton_Click事件。如果我刪除 - > this.ID =「Result」+ i.toString();和 - > PlayButton.ID = i.ToString();沒關係。
如果有任何選擇,你可能需要評估我的問題,生病很高興證明,並需要額外的代碼。 非常感謝您的幫助。
它是動態加載的Web用戶控件還是自定義控件?你可以發佈一些代碼來顯示你是如何做到這一點的? – 5arx 2012-04-13 13:58:39
爲什麼你要更改這些控件的ID?我可以看到它是如何引起問題的,但老實說,我從來不需要在代碼隱藏中更改ID。 – SouthShoreAK 2012-04-13 15:00:43
負載和預渲染器中的變量i是什麼?似乎很懷疑它的值會在加載和預渲染之間匹配。您可以在載入過程中將您的i存儲在您的控件的視圖狀態中,而不是觸摸ID。 – jbl 2012-04-13 15:10:00