Выберите строку из базы данных SQL в зависимости от выбранного индекса - PullRequest
1 голос
/ 18 июля 2011

Я пытаюсь отобразить строки из моей базы данных на основе первичного ключа при нажатии кнопки выбора.

<asp:Panel ID="pnlView" runat="server">
        <p>
            <asp:Label ID="lblTitle" runat="server" Text="Label"></asp:Label></p>
        <p>
            <asp:Label ID="lblBody" runat="server" Text="Label"></asp:Label></p>
    </asp:Panel>
    <asp:GridView ID="GridView1" runat="server" DataSourceID="sdsDocuments" EnableModelValidation="True"
        SelectedIndex="0" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
        <Columns>
            <asp:CommandField ShowSelectButton="True" />
        </Columns>
    </asp:GridView>



 protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        lblTitle.Text = GridView1.SelectedRow.ToString();
        lblBody.Text = GridView1.SelectedIndex.ToString();

        SqlConnection thisConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["blcDocumentationConnectionString"].ConnectionString);

        // Create Command Object
        SqlCommand nonqueryCommand = thisConnection.CreateCommand();

        try
        {
            // Open Connection
            thisConnection.Open();

            // Create INSERT statement with named parms
            nonqueryCommand.CommandText = "SELECT DocumentTitle,DocumentBody FROM tblDocument WHERE DocumentID = @DocumentID";

            // Add parms to Command parms collection
            nonqueryCommand.Parameters.Add("@DocumentID", SqlDbType.Int);

            // Execute query statement
            nonqueryCommand.ExecuteNonQuery();
        }

        catch (SqlException ex)
        {
        }

        finally
        {
            // Close Connection
            thisConnection.Close();
        }

Ответы [ 2 ]

2 голосов
/ 18 июля 2011

В событии GridView1_SelectedIndexChanged я не вижу, чтобы вы установили значение для вашего параметра @DocumentID

Заменить nonqueryCommand.Parameters.Add("@DocumentID", SqlDbType.Int);

с этим nonqueryCommand.Parameters.AddWithValue("@DocumentID", GridView1.SelectedValue);

Редактировать: После вашего комментария вам также необходимо отобразить текст в ярлыке, сделайте как ...

GridViewRow row = GridView1.SelectedRow;
lblTitle.Text = row.Cells[TitleCellIndex].Text;
lblBody.Text = row.Cells[BodyCellIndex].Text 
1 голос
/ 18 июля 2011

Вы не передаете значение в свой параметр SQL для документирования.Если ваша сетка заполнена правильно, текущее значение строки находится внутри переменной EventArgs e.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...