0

.NET 专业人士

我有一个问题想和你分享,如果可能的话,得到一个建议:

我正在使用 datalist 动态加载用户控件。我正在为从数据库中获取的每一行加载这个用户控件,它可能是这个控件的 30 个不同的实例。

当用户单击按钮时,我希望能够获取此特定用户控件属性的值,据我了解,我注意到用户控件 ID 这样做,这就是为什么我想将我的“自定义 ID”分配给每个加载的控件所以我以后可以找到它。也许我错过了一些东西,也许这不是最好的方法,我愿意接受建议。反正.....

后面的 UserControl 代码:

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

如果还有其他问题,您可能需要评估我的问题,我很乐意证明并需要额外的代码。非常感谢您的帮助。

4

2 回答 2

1

查看数据列表的 itemcommand。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datalist.itemcommand%28v=vs.71%29.aspx

于 2012-04-13T14:00:16.027 回答
1

我的解决方案是这样的:

我没有使用图像按钮,而是使用了超链接。

用户控件的 on_Load 事件,我将我的用户控件的所有属性分配给超链接的 src 属性,并使用

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

于 2012-04-14T21:58:27.480 回答