2012-04-13 5 views
0

.NETのプロが起きないのはなぜ私は私はあなたと共有したいと、可能な場合はアドバイスを得るという問題があります。ユーザーコントロール内のボタンのOnClickイベントがそこ</p> <p>を

私は、ユーザーコントロールをロードしていますがデータリストを使用して動的に私はデータベースから取得する行ごとにこのusercontrolをロードしています。このコントロールのインスタンスは30種類あります。

ユーザーがボタンをクリックすると、この特定のusercontrolのプロパティの値を取得できるようにしたいと思います。私の理解では、私はusercontrol IDに注意してください。なぜ私は "custom 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

+0

なぜこれらのコントロールのIDを正確に変更していますか?どのようにして問題が発生するかはわかりますが、コードビハインドでIDを変更する必要はありません。 – SouthShoreAK

+0

ロードとプリレンダリングの変数iは何ですか?その値が負荷と事前レンダリングの間で一致することは非常に疑わしいようです。あなたはロード中にあなたのコントロールのビューステートにあなたのiを一度だけ保存し、IDに触れないでください。 – jbl

答えて

1

私の解決策は、このようなものだった:

の代わりに、画像湖底を使用して、私はハイパーリンクを使用していました。ユーザーコントロールの

on_Loadイベントは、私はすべてのプロパティの私のユーザーコントロールのハイパーリンクのsrc属性に割り当てられ、別のページに

クエリ文字列を使用して、それらを可決しました。

関連する問題