为什么一个按钮内用户控件不会发生

为什么一个按钮内用户控件不会发生

问题描述:

.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();没关系。

如果有任何选择,你可能需要评估我的问题,生病很高兴证明,并需要额外的代码。 非常感谢您的帮助。

+0

它是动态加载的Web用户控件还是自定义控件?你可以发布一些代码来显示你是如何做到这一点的? – 5arx 2012-04-13 13:58:39

+0

为什么你要更改这些控件的ID?我可以看到它是如何引起问题的,但老实说,我从来不需要在代码隐藏中更改ID。 – SouthShoreAK 2012-04-13 15:00:43

+0

负载和预渲染器中的变量i是什么?似乎很怀疑它的值会在加载和预渲染之间匹配。您可以在载入过程中将您的i存储在您的控件的视图状态中,而不是触摸ID。 – jbl 2012-04-13 15:10:00

我的解决办法是这样的:

的使用图像BUTTOM代替

,我使用超链接。在用户控件的

ON_LOAD事件,我分配到超链接的所有属性我的用户控件的SRC属性,并通过使用

查询字符串到另一个页面的。

+0

谢谢,虐待检查了这一点 – ellipertzov 2012-04-13 20:10:53