2010-12-30 5 views
0

Я пытаюсь выполнить хранимую процедуру и поместить информацию в datagrid (без использования .net-мастера), я хочу сделать это вручную. С помощью ado.net я верю. Я использую VB.NET и ASP.NETПомогите заполнить gridview из хранимой процедуры

Public cmd As New SqlCommand() 
    Public saoda As New SqlDataAdapter(cmd) 
    Public conn As New SqlConnection(" ") 
    Dim saods As New DataSet 

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 

     Dim reader As SqlDataReader 
     cmd.Parameters.AddWithValue("@yeartoget", DropDownList1.SelectedValue) 
     cmd.CommandText = "casof" 
     cmd.CommandType = CommandType.StoredProcedure 
     cmd.Connection = conn 

     conn.Open() 

     reader = cmd.ExecuteReader() 
     ' Data is accessible through the DataReader object here. 

     GridView1.DataSource = saods 

     saoda.FillSchema(saods, SchemaType.Mapped) 

     GridView1.DataBind() 
     conn.Close() 

    End Sub 
End Class 

VVVVV

Dim pctofsales As New DataColumn 
     pctofsales = New DataColumn("PCTofsales", GetType(Decimal)) 
     pctofsales.Expression = "IIF([YEsales] = 0, 0, [ASOFSales]/[YEsales])" 
     saods1.Tables("salesasoftable").Columns.Add(pctofsales) 

ответ

1

Вам не нужно привязать DataSet к GridView - это SqlDataReader будет достаточно. То есть, вы можете использовать следующее:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim reader As SqlDataReader 
    cmd.Parameters.AddWithValue("@yeartoget", DropDownList1.SelectedValue) 
    cmd.CommandText = "casof" 
    cmd.CommandType = CommandType.StoredProcedure 
    cmd.Connection = conn 

    conn.Open() 

    reader = cmd.ExecuteReader() 

    GridView1.DataSource = reader 
    GridView1.DataBind() 

    conn.Close() 
End Sub 

Однако, если вы хотите/потребность использовать DataTable, это не большое дело, либо. Следующий фрагмент загружает считыватель в DataTable:

Dim reader As SqlDataReader 
cmd.Parameters.AddWithValue("@yeartoget", DropDownList1.SelectedValue) 
cmd.CommandText = "casof" 
cmd.CommandType = CommandType.StoredProcedure 
cmd.Connection = conn 

conn.Open() 

reader = cmd.ExecuteReader() 

Dim myTable As DataTable = New DataTable() 
myTable.Load(reader) 

GridView1.DataSource = dt 
GridView1.DataBind() 

conn.Close() 

Счастливое программирование!

+0

спасибо, что можно выбрать, какие столбцы я хочу удалить или использовать набор данных, чтобы я мог вносить изменения в столбцы, я бы просто привязал читателя к набору данных. Спасибо – MyHeadHurts

+0

@MyHeadHurts: Если вы хотите указать, что столбцы для отображения в GridView, используйте коллекцию GridView и установите для свойства AutoGenerateFields значение False. Вы также можете сделать это через Дизайнер - откройте Smart Tag сетки и выберите «Редактировать столбцы». См. Http://msdn.microsoft.com/en-us/library/aa479342.aspx –

+0

Я вроде хочу сделать что-то вроде кода, который я опубликую прямо сейчас выше – MyHeadHurts