.NET の専門家
私はあなたと共有したい問題があり、可能であればアドバイスを求めます:
データリストを使用してユーザーコントロールを動的にロードしています。データベースから取得した行ごとにこのユーザーコントロールをロードしています。このコントロールの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(); 大丈夫です。
私の問題を評価するために他に必要なことがあれば、喜んで証明し、追加のコードが必要です。ご助力ありがとうございます。