【问题标题】:Gridview Search box in ASP.NETASP.NET 中的 Gridview 搜索框
【发布时间】:2015-06-14 10:01:20
【问题描述】:

我已经使用文本框和按钮控件制作了搜索框来搜索我的 GridView 中的数据,对于我使用 ObjectDataSource 的数据源。在 ObjectDataSource 类中,我使用参数化过程从数据库表中选择数据,但是这里出现了问题,ObjectDataSource 期望参数类的值。我已经通过硬编码类解决了这个问题,如果它为空给参数值等于空白,它工作得很好。

如果有另一种方法可以解决这个问题而无需对课程进行硬编码,任何答案都会有所帮助,谢谢

这是我的 ObjectDataSource 选择类

public static List<T_Penerbit> GetSearchPenerbit(string Cari)
        {
            if (string.IsNullOrWhiteSpace(Cari))
            {
                Cari = " ";
            }

            List<T_Penerbit> listSearchPenerbit = new List<T_Penerbit>();

            string cs = ConfigurationManager.ConnectionStrings["cs_perpustakaan"].ConnectionString;

            using (SqlConnection con = new SqlConnection(cs))
            {
                SqlCommand cmd = new SqlCommand("spGetPenerbitBySearch", con);
                cmd.CommandType = CommandType.StoredProcedure;

                SqlParameter paramSearch = new SqlParameter("@parameter", Cari);
                cmd.Parameters.Add(paramSearch);

                con.Open();
                SqlDataReader rdr = cmd.ExecuteReader();

                while (rdr.Read())
                {
                    T_Penerbit penerbit = new T_Penerbit();
                    penerbit.ID = Convert.ToInt32(rdr["ID"]);
                    penerbit.Penerbit = rdr["Nama_Penerbit"].ToString();
                    penerbit.Kota = rdr["Kota"].ToString();
                    penerbit.Handphone = rdr["Handphone"].ToString();
                    penerbit.Email = rdr["Email"].ToString();

                    listSearchPenerbit.Add(penerbit);
                }
            }
            return listSearchPenerbit;
        }

这是我的按钮搜索点击事件

protected void ButtonKelolaDataPenerbitCariPenerbit_Click(object sender, EventArgs e)
        {
            ObjectDataSourceCariDataPenerbit.SelectParameters.Clear();
            ObjectDataSourceCariDataPenerbit.SelectParameters.Add("Cari", TextBoxKelolaDataPenerbitCariPenerbit.Text);

            ObjectDataSourceCariDataPenerbit.DataBind();
        }

【问题讨论】:

    标签: c# asp.net search gridview


    【解决方案1】:

    演示文稿更改:

     <div style="margin-top:50px">
            SEARCHING
            <br /><br />
            Enter Id : - 
            <asp:TextBox ID="txtSearchId" runat="server"></asp:TextBox>
            <asp:Button ID="btnSearch" runat="server" Text="Search" OnClick="btnSearch_Click" />
        </div>
    

    后端更新:

    protected void btnSearch_Click(object sender, EventArgs e)
        {
            SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["StudDBConnectionString"].ToString());
            SqlCommand sqlCommand = new SqlCommand();
            sqlCommand.Connection = sqlConnection;
            sqlCommand.CommandText = "select * from tbl_stud where id="+txtSearchId.Text;
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand);
            dataTable = new DataTable();
            sqlDataAdapter.Fill(dataTable);
            grvStudentWithoutDatasource.DataSource = dataTable;
            grvStudentWithoutDatasource.DataBind();
        }
    

    注意:给定的代码是根据我的数据库,请相应地更改数据库列。

    【讨论】:

    • 这对 SQL 注入很开放。我建议不要这样做。
    • 感谢您的回答,这是最好的方法吗?因为我使用 ObjectDataSource 和 storedProcedure 来防止 sql 注入
    【解决方案2】:

    试试这个

    aspx 文件:

    <asp:ObjectDataSource runat="server" ID=" ObjectDataSourceCariDataPenerbit" TypeName="Penerbit" SelectMethod="GetSearchPenerbit">
        <SelectParameters>
            <asp:ControlParameter ControlID="TextBoxKelolaDataPenerbitCariPenerbit" Name="Cari" Type="String" />
        </SelectParameters>
    </asp:ObjectDataSource>
    

    按钮搜索点击事件

    protected void ButtonKelolaDataPenerbitCariPenerbit_Click(object sender, EventArgs e)
            {
    
                ObjectDataSourceCariDataPenerbit.DataBind();
            }
    

    【讨论】:

    • 实际上我的代码按预期工作,但我不知道如何在不硬编码的情况下传递参数值
    • 它期望没有提供的参数
    猜你喜欢
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    相关资源
    最近更新 更多