0

.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(); 大丈夫です。

私の問題を評価するために他に必要なことがあれば、喜んで証明し、追加のコードが必要です。ご助力ありがとうございます。

4

2 に答える 2

1

私の解決策は次のようなものでした:

画像ボタンを使用する代わりに、ハイパーリンクを使用しました。

ユーザーコントロールのon_Loadイベント、ハイパーリンクのsrc属性にユーザーコントロールのすべてのプロパティを割り当て、

別のページへのクエリ文字列。

于 2012-04-14T21:58:27.480 に答える
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 に答える