2017-02-01 4 views
2

У меня есть главная страница в ведьме более 30 кнопок типа (java, asp, php, sql, c, C++ и т. Д.) и есть таблица вопросов. Все вопросы отмечены одним субъектом, таким как asp, java и т. Д.Получить идентификатор кнопки для запроса

Я хочу получить данные в соответствии с кнопкой. Как это возможно?

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(); 
} 

(я думаю, что одна страница для одной кнопки не является хорошей идеей.)

ответ

0

Есть несколько способов, чтобы захватить нажатие кнопки внутри данных, таких как Repeater, GridView, ListView.

Самый простой способ заключается в использовании Command событие вместо Нажмите событий.

<%-- 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

Вам необходимо использовать одинарные кавычки внутри повторяющегося элемента управления Control CommandMgument = '<% # 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; 
    } 
Смежные вопросы