2010-08-20 4 views
0

Я пытаюсь получить значение из Databse и назначить его на этикетке, используя следующую строку:ASP.NET контролирует C#

lblQuestion.Text = ds.Tables[0].Rows[0]["Question"].ToString(); 

но он назначает в качестве метки.

  if (ds.Tables[0].Rows.Count > 0) 
      { 
       lblQuestion.Text = ds.Tables[0].Rows[0]["Question"].ToString(); ; 
      } 
+6

Не уверен, что вы имеете в виду с «но он назначает в качестве метки». Не могли бы вы это уточнить? –

ответ

1

ОБНОВЛЕНО - Удаляется моя последняя информация теперь, когда вы включили код ....

активизировали вас через код, чтобы увидеть, если данные возвращаются?

AKA - есть ds.Tables[0].Rows.Count > 0?

Вы также делаете !Page.IsPostBack. Это вызовет только код и загрузит ваши метки, если он находится на первой загрузке ... Как насчет последующих нагрузок? Этикетки вернется к тому, что они по умолчанию в конструкторе .....

+0

ToString() не возвращает свойство ColumnName столбца как '.Rows [0] [" Question "]' использует индексаторы для получения значения столбца Question для первой записи в таблице. – Rob

+0

Это правильно. Спасибо за разъяснение .... :-) – klabranche

1

Я соединил тест-случай в веб-приложение следующим образом:

ASPX Code-за:

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     var ds = new DataSet(); 
     var table = new DataTable(); 
     table.Columns.Add("Question", typeof(string)); 
     table.Rows.Add(new object[] { "This is the question" }); 

     ds.Tables.Add(table); 

     lblQuestion.Text = ds.Tables[0].Rows[0]["Question"].ToString(); 
    } 
} 

ASPX Страница:

<form id="form1" runat="server"> 
<div> 
    <asp:Label runat="server" ID="lblQuestion"></asp:Label> 
</div> 
</form> 

Это делает правильно, как:

<div> 
    <span id="lblQuestion">This is the question</span> 
</div> 

Вы уверены, что вы указали нам код, который на самом деле работает?

0
protected void Page_Load(object sender, EventArgs e) 
    { 
     //if (Request.QueryString["QID"] != null) 
     //{ 
     // Response.Write(Request.QueryString["QID"].ToString()); 
     //} 
     if (!Page.IsPostBack) 
     { 
      int i = Convert.ToInt32(Request.QueryString["QID"]); 
      // Response.Write(i); 
      eTutorService ServiceProvider = new eTutorService(); 
      DataSet ds = new DataSet(); 
      ds = ServiceProvider.GetQuestionView(i); 
      if (ds.Tables[0].Rows.Count > 0) 
      { 
       lblQuestion.Text = ds.Tables[0].Rows[0]["Question"].ToString(); ; 
       lblOption1.Text = ds.Tables[0].Rows[0]["Option1"].ToString(); 
       lblOption2.Text = ds.Tables[0].Rows[0]["Option2"].ToString(); 
       lblOption3.Text = ds.Tables[0].Rows[0]["Option3"].ToString(); 
       lblOption4.Text = ds.Tables[0].Rows[0]["Option4"].ToString(); 
       lblCorrectOption.Text = ds.Tables[0].Rows[0]["CorrectAnswer"].ToString(); 
       lblPaper.Text = ds.Tables[0].Rows[0]["subject"].ToString(); 
       lblDifficultyLevel.Text = ds.Tables[0].Rows[0]["LEVEL_NAME"].ToString(); 
       lblquestionOrder.Text = ds.Tables[0].Rows[0]["QuestionOrder"].ToString(); 
      } 
     } 


     } 

Его просто поставить метку , а не кладя значение базы данных на этикетке

+0

В следующий раз просто введите код в свой начальный вопрос, а не добавьте в качестве ответа .... :-) – klabranche

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