2015-02-24 2 views
0

Надеюсь, вы сможете помочь с моей проблемой. Я пытаюсь заполнить форму из моей базы данных, используя данные. Кажется, все работает нормально, но я не получаю никаких данных. Может ли кто-нибудь объяснить, почему? Я посмотрел на отладку, и, похоже, ошибок нет, и ничего не похоже на то, что он сработал. Вот мой код позади (vb.net)ASP.net datatable не возвращает значения

Imports System.Data 
Imports System.Data.SqlClient 
Imports System.Net.Mail 

Partial Class _Default 
Inherits System.Web.UI.Page 

Private Sub getData(ByVal user As String) 
    Dim dt As New DataTable() 
    Dim constr As String = ConfigurationManager.ConnectionStrings("conn").ConnectionString 
    Dim connection As New SqlConnection(constr) 
    connection.Open() 
    Dim sqlCmd As New SqlCommand("SELECT * from tblContent WHERE CID = @ID", connection) 
    Dim sqlDa As New SqlDataAdapter(sqlCmd) 

    sqlCmd.Parameters.AddWithValue("@ID", Request.QueryString("ID")) 
    sqlDa.Fill(dt) 
    If dt.Rows.Count > 0 Then 
     ID.Text = dt.Rows(0)("CID").ToString 
     TextBox2.Text = dt.Rows(0)("Heading").ToString 
     TextBox1.Text = dt.Rows(0)("ContText").ToString 
     Label2.Text = dt.Rows(0)("Location").ToString 
    End If 
    connection.Close() 
End Sub 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) 
    If Not Page.IsPostBack Then 
     getData(Me.User.Identity.Name) 
    End If 
End Sub 

Презентация слой:

<h2><asp:Label ID="Label2" runat="server" Text=""></asp:Label></h2> 
<asp:TextBox ID="ID" runat="server" Visible="false"> </asp:TextBox><br /> 

<asp:Label ID="Label3" runat="server" Text="Heading" CssClass="label"></asp:Label> 
<asp:TextBox ID="TextBox2" TextMode="SingleLine" Text="" runat="server"></asp:TextBox><br /> 
<asp:Label ID="Label1" runat="server" Text="Content" CssClass="label"></asp:Label><br />  
<asp:TextBox ID="TextBox1" TextMode="MultiLine" runat="server"></asp:TextBox>    

Я передаю через ID с другой страницы с помощью строки запроса (ID = 5 в качестве примера). В моей базе данных есть данные, и все ярлыки/текстовые поля имеют правильные идентификаторы и т. Д. Я просто вижу, что не так?

Спасибо!

+0

_ «все ярлыки/текстовые поля имеют правильные идентификаторы и т. Д.» _, Так что не так? Вы использовали отладчик? В стороне, вы должны использовать 'Using'-statement для вашего соединения и dataadapter. Он обеспечивает закрытие соединения даже при ошибке. Кроме того, методы должны начинаться с буквы верхнего регистра, и если они не возвращают ничего, они не должны начинать с 'Get'. –

+0

Привет Тим ​​- Нет данных, возвращаемых для заполнения текстовых полей/таблиц. Я попробовал отладчик, но ошибок не было. У вас есть пример используемого заявления, которое вы упомянули? Благодаря! –

+0

Можете ли вы поставить профайлер на SQL-сервер, чтобы проверить, доходит ли он туда или нет? – Amit

ответ

2

Вы могли бы попытаться передать правильный тип вместо строки:

Using sqlDa As New SqlDataAdapter(sqlCmd) 
    Dim idParam = new SqlParameter("@ID", SqlDbType.Int) 
    Dim id As Int32 
    If Not Int32.TryParse(Request.QueryString("ID"), id) Then Throw New Exception("Not a valid ID-parameter!") 
    idParam.Value = id 
    sqlDa.SelectCommand.Parameters.Add(idParam) 
    sqlDa.Fill(dt) 
End Using 

Кстати, также использовать Using -statement для подключения. В стороне, вам не нужно открывать/закрывать соединение с SqlDataAdapter.Fill(table), так как это делается автоматически.

+0

Спасибо за внимание и ответ, чтобы посмотреть на этот Тим. К сожалению, кажется, что он все еще не тянет через какие-либо данные. Я отлаживал его в визуальной студии и в хроме, но оба не показывают ошибок, просто пустую форму без данных. Что я нашел нечетным, так это то, что я попробовал ID как «abc» (? ID = abc) и не было обнаружено ошибок? Которое я предполагаю, что оно должно быть где-то, поскольку это не тип int. Я отлаживаю это неправильно или визуальная студия говорит мне ложь? Спасибо –

+0

@BenWilliams: это звучит не так, как если бы вы действительно использовали отладчик. Установите точку останова в этом методе и посмотрите, что происходит в каждой строке. Если идентификатор строки запроса «abc», вы явно получите исключение, которое я выбрал выше. Поэтому либо этот метод не выполняется, либо вы не заметили, что произошло исключение. –

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