2015-06-14 4 views
0

Я создал окно поиска с помощью текстового поля и кнопки управления для поиска данных в моем GridView, для источника данных Я использую ObjectDataSource. В классе ObjectDataSource я использую параметризованную процедуру для выбора данных из таблицы базы данных, но проблема здесь возникла, ObjectDataSource ожидает значение для класса параметров. Я решил это с помощью hardcoded класса, если он равен нулю, значение параметра равно пробелу, оно работает хорошо.Поле поиска Gridview в ASP.NET

Если есть другой способ решить эту проблему без HARDCODED класса, любые ответы были бы полезны, спасибо

Вот мой ObjectDataSource Select Class

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

ответ

0

изменения Презентация:

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

Back-конец обновления:

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

Примечание: Данный код по моей базе данных, пожалуйста, изменить столбец базы данных соответственно.

+0

Это широко открыты для SQL инъекций. Я не рекомендую этого делать. –

+0

Спасибо за ответ, это лучший способ сделать это? потому что я использую ObjectDataSource и storedProcedure для предотвращения SQL-инъекции – Agustyan

0

попробовать этот

ASPX файл:

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

кнопку Поиск Click событие

protected void ButtonKelolaDataPenerbitCariPenerbit_Click(object sender, EventArgs e) 
     { 

      ObjectDataSourceCariDataPenerbit.DataBind(); 
     } 
+0

На самом деле мой код работает так, как ожидалось, но я не знаю, как передать значение параметра без жесткого кодирования. – Agustyan

+0

@Agustyan это будет работать без жесткого кодирования. –

+0

Ожидает, что параметр, который не указан – Agustyan

Смежные вопросы