2011-07-18 11 views
1

選択ボタンをクリックすると、主キーに基づいてデータベースから行を表示しようとしています。 GridView1_SelectedIndexChangedイベントで選択したインデックスに応じてSQLデータベースから行を選択

<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

質問は? – Quassnoi

答えて

2

、私は@DocumentID

はこの1つnonqueryCommand.Parameters.AddWithValue("@DocumentID", GridView1.SelectedValue);

を編集して、このnonqueryCommand.Parameters.Add("@DocumentID", SqlDbType.Int);

を交換し、あなたのパラメータの値を設定していることを確認することはできません。後あなたのコメントは、あなたのラベルにテキストを表示する必要がある、好きですか...

GridViewRow row = GridView1.SelectedRow; 
lblTitle.Text = row.Cells[TitleCellIndex].Text; 
lblBody.Text = row.Cells[BodyCellIndex].Text 
+0

ありがとうございます、今、lblTitle&lblBodyにどのように入力しますか? – bluetickk

+0

答えが更新されました。今すぐ確認してください:) –

+0

Muhammad、これはグリッドビューからテーブルを取り込むだけです。データベースから直接アクセスする必要があります。ストアドプロシージャからラベルに移動する方法はありますか? – bluetickk

1

documentidのSQLパラメータに値を渡していません。グリッドが正しく設定されている場合、現在の行の値はEventArgsの変数の内部にあります。

関連する問題