2013-03-12 87 views
1

我的標籤:這裏提到的標籤後面跟着代碼。如何從數據庫獲取記錄並將其加載到標籤?

 <div id="valueIntroduction" class="labelarea" runat="server"> </div> 
     <div class="line"></div> 
     <div id="valueBacklog notice" class="labelarea"> </div> 
     <div class="line"></div> 
     <div id="valueReasonably complete" class="labelarea"> </div> 
     <div class="line"></div> 
     <div id="valueStatement of purpose" class="labelarea"> </div> 
     <div class="line"></div> 
     <div id="valueResume" class="labelarea"> </div> 
     <div class="line"></div> 
     <div id="valueTranscripts" class="labelarea"> </div> 
     <div class="line"></div> 
     <div id="valueGRE Official test scores" class="labelarea"> </div> 
     <div class="line"></div> 
     <div id="valueTOEFL or IELTS Official test scores" class="labelarea"> </div> 
     <div class="line"></div> 
     <div id="valueLetters of Recommendation3" class="labelarea"> </div> 
     <div class="line"></div> 
     <div id="valueLetters of Recommendation2" class="labelarea"> </div> 
     <div class="line"></div> 
     <div id="valueLetters of Recommendation1" class="labelarea"> </div> 
     <div class="line"></div> 
     <div id="valueSignature" class="labelarea"> </div> 
     <div class="line"></div> 
     <div id="valueSubject" class="labelarea"> </div> 
     <div class="line"></div> 

此代碼將最後一條記錄分配給第一個標籤。如何將正確的記錄分配到正確的標籤?

 if (Department.Items[0].Selected) 
       { 
         firstPanel.Visible = true; 
         myLegend.InnerText = "Informatics"; 
         NewComm.CommandText = "getTextHeaderINFO"; 

         NewComm.CommandType = CommandType.StoredProcedure; 
         NewComm.Connection = NewConn; 
         NewComm.CommandTimeout = 3000; 
         SqlDataReader results = NewComm.ExecuteReader(); 

         while (results.Read()) 
         { 
          Response.Write(results["TEXT_CONTENT"].ToString()); 
          valueIntroduction.InnerHtml = results["TEXT_CONTENT"].ToString(); 
         } 
       } 
+1

哪裏是你的標貼 – 2013-03-12 18:25:32

+0

SIZ S I編輯我的問題。請看看它。 – 2013-03-12 18:31:47

+0

第一個ID必須沒有空格,第二個結果是[「TEXT_CONTENT」],使用if(results.Read())而不是while(results.Read()) – 2013-03-12 18:33:22

回答

1

好吧,就像現在寫的那樣,您在while循環的每次迭代中都設置了相同的標籤InnerHtml。

我想你會更喜歡這樣做的事情:

label1.InnerHTML = results["text_content"]; 
results.read() 
label2.InnerHtml = results["text_content"]; 

總之,你需要反覆分配結果。將它們讀入列表或字符串數​​組中(在您的循環中)可能會更安全,因此您可以驗證計數,但基本上必須單獨設置每個標籤。我無法想象你如何期望它能夠一次又一次地設置一個。


現在,你應該做的,當你打算用HTML元素的工作程序是從我在這裏看到的有很大不同。

你在這裏做什麼需要你通過ID查找HTML元素,分配給他們的InnerHtml,並且老實說很容易出錯。這對C#或.NET環境也不是很好。

改爲使用.NET標籤。他們定義是這樣的:

<asp:Label runat="server" id="valueIntroduction" CssClass="labelarea" /> 

然後在後面的代碼,你可以更容易訪問它們:

valueIntroduction.Text = "This text will show up in the valueIntroduction label"; 
+0

謝謝傑夫..將實施您在這裏建議的方法...再次感謝... – 2013-03-12 18:54:51

+0

@vimal沒問題。請記住,如果答案有幫助,您應該注意,並且您應該通過單擊複選標記選擇最有用的答案(如果有)作爲解決方案。 – Jeff 2013-03-12 20:29:44

0

爲什麼你在循環中調用results.Read()?您應該只在結果中找到單個結果行,並將其放入valueIntroduction.InnerHtml屬性中。

+0

他的結果似乎包含所有標籤,並且每個read()調用都會獲得下一個結果。當記錄無法進一步讀取時,對read()的調用會被解釋爲'false',這會乾淨地退出while循環。 – Jeff 2013-03-12 18:36:36

相關問題