构建按钮单击方法以避免代码重复

时间:2013-02-25 21:55:19

标签: c# asp.net

我有以下两个按钮单击方法,它们从三个TextBox创建一个数组,对这些值进行排序,将它们插入到数据库中,然后以相同的顺序选择值。两个按钮之间的唯一区别是,按升序对值进行排序,而另一个按降序排序。

我不习惯使用C#。任何人都可以建议构建我的代码的最佳方法,所以我不是为每个按钮重复它吗?通常我会编写一个函数并让每个按钮传递参数。这是去这里的正确方法吗?

提前致谢。

Button1的

protected void Button1_Click(object sender, EventArgs e)
{
    var list = new string[] { TextBox1.Text, TextBox2.Text, TextBox3.Text };
    var orderedlist = list.OrderBy(x => (x)).ToArray();

...

    SqlCommand cmd = new SqlCommand("Select * from lists order by values asc", conn);

将Button2

protected void Button2_Click(object sender, EventArgs e)
{
    var list = new string[] { TextBox1.Text, TextBox2.Text, TextBox3.Text };
    var orderedlist = list.OrderByDescending(x => (x)).ToArray();

...

    SqlCommand cmd = new SqlCommand("Select * from lists order by values desc", conn);

2 个答案:

答案 0 :(得分:5)

您可以将Button点击事件分配给同一个处理程序,然后使用sender选择您想要的排序。

protected void Button_Click(object sender, EventArgs e)
{
    var list = new string[] { TextBox1.Text, TextBox2.Text, TextBox3.Text };
    var orderedlist = (sender as Button).AccessKey  == "Button1" // or whatever name it is
                      ? list.OrderByDescending(x => (x)).ToArray()
                      : list.OrderBy(x => (x)).ToArray();

    .............
}

答案 1 :(得分:2)

On选项是创建一个函数,排序:

public list sort(String order)
{
     var list = new string[] { TextBox1.Text, TextBox2.Text, TextBox3.Text };
     var orderedlist = list.OrderByDescending(x => (x)).ToArray();
     ...

     SqlCommand cmd = new SqlCommand("Select * from lists order by values " + order, conn)
     ...
     return SortedList;
}

调用sort(“asc”)以按升序创建排序列表,并排序(“desc”)以按降序排序。并且没有代码重复:)