c#datagridview用类singleresponsibility填充

xmakbtuz  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(263)

大家好,我决定建立一个图书馆项目来提高自己。我创建了一个类来编写代码本操作,但找不到如何通过class方法填充datagrid。当我将此方法文本化为按钮操作时,它不起作用。我找到了解决办法。下面是我的bookoperation类的一些代码;

public void GetBookByName(Yönetici f1)
    {
        conn.Open();
        SqlCommand cmd = new SqlCommand("Select * from Kitaplar where Kitap_Adi like '%" + f1.textBox1.Text.Trim() + "%'", conn); 
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        da.Fill(dt);
        f1.dataGridView1.DataSource = dt;
        conn.Close();
    }
    public void GetBookByAuthor(Yönetici f1)
    {
        conn.Open();
        SqlCommand cmd = new SqlCommand("Select * from kitaplar where Yazar like '%" + f1.textBox1.Text.Trim() + "%'", conn);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        da.Fill(dt);
        f1.dataGridView1.DataSource = dt;
        conn.Close();

    }
    public void GetBookByGenre(Yönetici f1)
    {
        conn.Open();
        SqlCommand cmd = new SqlCommand("Select * from kitaplar where Tür like '%" + f1.textBox1.Text.Trim() + "%'", conn);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        da.Fill(dt);
        f1.dataGridView1.DataSource = dt;
        conn.Close();
    }

yönetici是我的名字,应用于图书操作屏幕。在按钮动作中,包括;

Kitap_islemleri ki = new Kitap_islemleri();
ki.GetBookByName(this);

单一责任可以吗?或者有什么不同的方法?你能帮帮我吗?使用somemethod(this)有点奇怪,它是错误的还是好的开始?你怎么认为。不使用(这个)我怎么能得到数据?如果有办法,你能打吗?

efzxgjgh

efzxgjgh1#

我建议您根据需要更改方法参数和返回类型。似乎您的查询只需要一个条件。

public DataTable GetBookByName(string bookName)
{
    conn.Open();
    SqlCommand cmd = new SqlCommand("Select * from Kitaplar where Kitap_Adi like '%" + bookName.Trim() + "%'", conn); 
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable dt = new DataTable();
    da.Fill(dt);
    conn.Close();
    return dt;
}

因此,您不需要数据访问层上的所有yonetici页面,通过返回的datatable,您可以将其绑定到表示层上的gridview。

var bookName = f1.textBox1.Text;
f1.dataGridView1.DataSource = ki.GetBookByName(bookname);

第2部分

public DataTable GetBooks(string filter, string criteria)
{
conn.Open();
SqlCommand cmd = new SqlCommand("Select * from Kitaplar where " + filter + " like '%" + criteria.Trim() + "%'", conn); 
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
conn.Close();
return dt;
}

使用

GetBooks("Kitap_Adi", "name");
GetBooks("Yazar", "author");
GetBooks("Tür", "kind")

相关问题