Невозможно отобразить данные сетки в поиске - PullRequest
0 голосов
/ 13 ноября 2018

Мне удалось получить данные из базы данных, когда была загружена страница, показывающая все данные в базе данных до сих пор.но когда я собирался использовать текстовое поле и кнопку поиска, я получил сообщение об ошибке «ОШИБКА: ДОЛЖНА ОБЪЯВИТЬ ПЕРЕМЕННУЮ СКАЛЯРНУЮ @MRF_NO».Есть ли проблемы с моим кодом?Я выложу коды.

C #

private void searchsumm()
    {
        database db = new database();
        string database = db.MRF();
        using (SqlConnection con = new SqlConnection(database))
        {
            con.Open();

            string query = "Select MRF_No, BU, Dept,ReqByDept_Mngr FROM MRF_Details";
            using (SqlCommand com = new SqlCommand(query, con))

            if (!string.IsNullOrEmpty(txtSearch.Text.Trim()))
            {
                query += " WHERE ContactName LIKE @MRF_No + '%'";
                com.Parameters.AddWithValue("@MRF_No", txtSearch.Text.Trim());
            }

            using (SqlDataAdapter sda = new SqlDataAdapter(query, con))
            {
                DataTable dt = new DataTable();
                sda.Fill(dt); //Error: Must declare the scalar variable "@MRF_No".
                smry.DataSource = dt;
                smry.DataBind();
            }
            con.Close();
        }

    }

ASP.NET

<div class="col-sm-4">
                <asp:TextBox ID="txtSearch" runat="server" ReadOnly="false" CssClass="form-control"></asp:TextBox>  
            </div>

            <div class="col-sm-5">
                <asp:Button ID="searchdb" runat="server" CssClass="btn" Text="Search" onclick="btnsummary"/>
            </div>

            <div class="row-space"></div>

        <asp:GridView runat="server" ID="smry" CssClass="list-group" AutoGenerateColumns="False" AllowPaging="true"  >

            <Columns>
                <asp:BoundField DataField="MRF_No" HeaderText="MRF No" SortExpression="MRF_No" />
                <asp:BoundField DataField="BU" HeaderText="Business Unit" SortExpression="BU" />
                <asp:BoundField DataField="Dept" HeaderText="Department" SortExpression="Dept" />
                <asp:BoundField DataField="ReqByDept_Mngr" HeaderText="Request By" SortExpression="ReqByDept_Mngr" />
            </Columns>

        </asp:GridView>

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Это может быть проблема синтаксиса. Можете ли вы увидеть, если ниже работает:

query += " WHERE ContactName LIKE @MRF_No";
com.Parameters.AddWithValue("@MRF_No", "%" + txtSearch.Text.Trim() + "%");
0 голосов
/ 13 ноября 2018

Похоже, ваш запрос неверен в предложении , где :

query += " WHERE ContactName LIKE @MRF_No + '%'";

Это должно быть:

query += " WHERE ContactName LIKE '%' + @MRF_No + '%'";

Кроме того, я думаю, вам нужно создатьваш SqlDataAdapter передает команду, которую вы только что создали, так что запрос включает в себя параметры, которые вы определили.

using (SqlDataAdapter sda = new SqlDataAdapter(com))
{
     DataTable dt = new DataTable();
     sda.Fill(dt);
     smry.DataSource = dt;
     smry.DataBind();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...