获取查询

时间:2017-02-01 14:02:06

标签: asp.net sql-server-2008

我有一个超过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();
}

(我认为一个按钮的一页不是个好主意。)

3 个答案:

答案 0 :(得分:0)

在数据中捕获按钮的方法很少,例如Repeater,GridView,ListView。

最简单的方法是使用 命令 事件而不是点击事件。

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

答案 1 :(得分:0)

如果你想要按钮本身的ID,你可以将发送者强制转换回按钮并获取它的ID。

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

答案 2 :(得分: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;
    }