2017-02-01 16 views
2

私は魔女のマスターページを持っています(Java、ASP、PHP、SQL、C、C++など...) のような30のボタンがあり、質問表があります。すべての質問は、asp、javaなどの1つの件名でタグ付けされています。質問の送信ボタンIDを取得

クリックボタンに応じてデータを取得します。 どうすれば可能ですか?

protected void BindRepeaterData() 
{ 
    con.Open(); 
    SqlCommand cmd = new SqlCommand("SELECT * from question", con); 
    int count = (int)cmd.ExecuteScalar(); 
    DataSet ds = new DataSet(); 
    SqlDataAdapter da = new SqlDataAdapter(cmd); 
    da.Fill(ds); 
    RepDetails.DataSource = ds; 
    RepDetails.DataBind(); 
    con.Close(); 
} 

(私は1つのボタンに1つのページは良いアイデアではないと思います。)

答えて

0

なリピータ、GridViewコントロール、リストビューなどのデータ内のボタンのクリックをキャプチャする方法はいくつかあります。

最も簡単な方法は、クリックイベントの代わりにコマンドイベントを使用することです。

<%-- Let say this button is located inside Repeater control.--%> 
<asp:Button ID="DoSomethingButton" runat="server" Text="Home" 
    OnCommand="DoSomethingButton_Command" CommandArgument="<%# Eval("Id") %>" /> 

// Retrieve e.CommandArgument from code-behind. 
protected void DoSomethingButton_Command(object sender, CommandEventArgs e) 
{ 
    int id = Convert.ToInt32(e.CommandArgument); 
} 
+0

データ反復制御の 'CommandArgument = '<%#Eval(" Id ")%>'' – VDWWD

0

ボタン自体のIDしたい場合は、[戻る]ボタンに送信者をキャストし、それがIDです取得することができます。

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Button button = sender as Button; 
    string id = button.ID; 
} 
0

私が正しく質問するとわかったら、このようにボタン情報に従ってテーブルからフィールドを選択することができます。また、異なるボタンに同じイベントハンドラを使用することもできます。お役に立てれば。

protected void Btn1_Click(object sender, EventArgs e) 
    { 
     Button button = sender as Button; 
     string question = readData(button.Text); 
     //do further actions 
    } 

    private string readData(string subject) 
    { 
     string question = string.Empty; 
     using (SqlConnection con = new SqlConnection(/*connection_string*/)) 
     { 
      using (SqlCommand cmd = new SqlCommand("SELECT question from question_table where subject = @subject", con)) 
      { 
       cmd.CommandType = CommandType.Text; 
       cmd.Parameters.AddWithValue("@subject", subject); 
       con.Open(); 
       object o = cmd.ExecuteScalar(); 
       if (o != null){ 
        question = o.ToString(); 
       } 
       con.Close(); 

      } 
     } 
     return question; 
    } 
関連する問題