2013-10-01 3 views
0

Мое приложение состоит из GridView, который содержит выпадающий список и . Что вы пытаетесь: когда пользователь выбирает элемент из раскрывающегося списка, элемент управления текстовым полем заполняется описанием элемента. Я в состоянии выполнить задачу с помощью следующего кода:Хранимая процедура не отображает данные

Protected Sub ddlStartPartDescrip_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) 
     Dim ddlStartPartDescrip As String = DirectCast(gvPartDetailDescription.Controls(0).Controls(0).FindControl("ddlStartPartDescrip"), DropDownList).Text 

     Dim myConnectionStringIII As String = ConfigurationManager.ConnectionStrings("ShipperNotificationConnectionString").ConnectionString.ToString 
     Dim myConnectionIII As New SqlConnection(myConnectionStringIII) 
     myConnectionIII.Open() 

     Dim mySQLQueryIII As String = "SELECT Part_Name, Part_Desc FROM Part WHERE Part_Name='" + ddlStartPartDescrip.ToString() + "'" + "ORDER BY Part_Name" 
     Dim myCommandIII As New SqlCommand(mySQLQueryIII, myConnectionIII) 


     Dim myReaderIII As SqlDataReader = myCommandIII.ExecuteReader() 

     While (myReaderIII.Read()) 
      'the orginal code 
      Dim row As GridViewRow = DirectCast(DirectCast(sender, DropDownList).NamingContainer, GridViewRow) 
      Dim txtStartPartDescripNum As TextBox = DirectCast(row.FindControl("txtStartPartDescripNum"), TextBox) 
      txtStartPartDescripNum.Text = myReaderIII.GetValue(1).ToString 
     End While 
     myReaderIII.Close() 
     myConnectionIII.Close() 
End Sub 

... однако, я пытаюсь выполнить ту же задачу с помощью хранимой процедуры. Моя проблема в том, что когда элемент списка выбран из раскрывающегося списка, элемент управления текстовым полем не содержит описания.

Это моя хранимая процедура:

USE [DatabaseName] 
GO 

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER PROCEDURE [dbo].[Part_Name_Descript] 
(
    @ddlStartPartDescrip varchar(250) 

) 
AS 
Begin 
    SELECT Part_Name, Part_Desc FROM Part WHERE Part_Name='" + @ddlStartPartDescrip + "' 
END 

Это код позади, который помещается внутри ddlStartPartDescrip_SelectedIndexChanged как я с не хранимой процедуры подхода:

Dim con As New SqlConnection(GetConnectionString()) 
     'open connection 
     con.Open() 

     Dim cmd As New SqlCommand("Part_Name_Descript", con) 
     cmd.CommandType = CommandType.StoredProcedure 

     Dim p1 As New SqlParameter("@ddlStartPartDescrip", ddlStartPartDescrip) 

     cmd.Parameters.Add(p1) 

     Dim rd As SqlDataReader = cmd.ExecuteReader() 

     While (rd.Read()) 
      Dim row As GridViewRow = DirectCast(DirectCast(sender, DropDownList).NamingContainer, GridViewRow) 
      Dim txtStartPartDescripNum As TextBox = DirectCast(row.FindControl("txtStartPartDescripNum"), TextBox) 
      txtStartPartDescripNum.Text = rd.GetValue(1).ToString 
     End While 

     con.Close() 

... Могу ли я получить некоторую помощь, пожалуйста, о том, что я пропущу/делаю неправильно? Заранее спасибо

ответ

1

вашего запроса

SELECT Part_Name, Part_Desc FROM Part WHERE Part_Name='" + @ddlStartPartDescrip + "' 

ищет Part_Name, который является символьной строкой "@ddlStartPartDescrip". Вы должны использовать

SELECT Part_Name, Part_Desc FROM Part WHERE Part_Name = @ddlStartPartDescrip 

Edit: кстати, у вас уже есть Part_Name, так что это может быть излишним, чтобы выбрать его.

+0

Спасибо за объяснение и исправление. – user1724708

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