2011-03-24 59 views
0

你好我得到多個記錄顯示,他們沒有按順序降序,當我插入按鈕點擊。由於代碼顯示多條記錄

文本被添加到數據庫中並顯示,但我得到的頁面,並從插入文本上顯示的記錄兩套下推到第一多個記錄的底部。

我怎樣才能糾正這個,所以我只能得到網頁上的一個回報和評論(從數據庫文本)被設置爲遞減。

代碼:

protected void Page_Load(object sender, EventArgs e) 
    { 
     string theUserId = Session["UserID"].ToString(); 
     PopulateWallPosts(theUserId); 
    } 
    private void PopulateWallPosts(string userId) 
    { 

     using (OdbcConnection cn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=gymwebsite2; User=x; Password=x;")) 
     { 
      cn.Open(); 
      using (OdbcCommand cmd = new OdbcCommand("SELECT Wallpostings FROM WallPosting WHERE UserID=" + userId + " ORDER BY idWallPosting DESC", cn)) 
      { 
       using (OdbcDataReader reader = cmd.ExecuteReader()) 
       { 



        while (reader.Read()) 
        { 
         System.Web.UI.HtmlControls.HtmlGenericControl div = new System.Web.UI.HtmlControls.HtmlGenericControl("div"); 
         div.Style["float"] = "left"; 
         Image img = new Image(); 
         img.ImageUrl = "~/userdata/2/uploadedimage/batman-for-facebook.jpg"; 
         img.AlternateText = "Test image"; 
         div.Controls.Add(img); 
         test1.Controls.Add(div); 

         System.Web.UI.HtmlControls.HtmlGenericControl div1 = new System.Web.UI.HtmlControls.HtmlGenericControl("div"); 
         div1.InnerText = String.Format("{0}", reader.GetString(0)); 

         div1.Style["float"] = "left"; 
         test1.Controls.Add(div1); 

         System.Web.UI.HtmlControls.HtmlGenericControl div2 = new System.Web.UI.HtmlControls.HtmlGenericControl("div"); 
         div2.Style["clear"] = "both"; 
         test1.Controls.Add(div2); 
        } 
       } 
      } 
     } 
    } 








    protected void Button1_Click(object sender, EventArgs e) 
    { 
     string theUserId = Session["UserID"].ToString(); 
     using (OdbcConnection cn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=gymwebsite2; User=x; Password=x;")) 
     { 
      cn.Open(); 
      using (OdbcCommand cmd = new OdbcCommand("INSERT INTO WallPosting (UserID, Wallpostings) VALUES (" + theUserId + ", '" + TextBox1.Text + "')", cn)) 
      { 
       cmd.ExecuteNonQuery(); 
      } 
     } 
     PopulateWallPosts(theUserId); 
    } 
} 
+0

我的第一個代碼這樣做正確,但自從我加入了代碼的HTML控件的去時髦 – 2011-03-24 12:37:51

回答

1

循環之前簡單地清除佔位符控件:

test1.Controls.Clear(); 
while (reader.Read()) 
{ 
    ... 
} 
+0

傳奇!發現得好! – 2011-03-24 13:30:43

+0

感謝影子!我怎麼知道你能夠幫助,你可以嘗試給我的其他帖子一些幫助,如果你瞭解他們足夠一直在試圖弄清楚爲什麼我不能添加一個img到div然後附加文本從我的數據庫後img ....高度令人沮喪的代碼上面的作品,我得到的佈局,但它的所有扭曲與我的css – 2011-03-24 13:32:47

+0

@Garrith我的榮幸..容易足以發現足夠的經驗這樣的事情。首先,當我有一些時間時,我會看看。 :-) – 2011-03-24 13:37:11

0

呼叫PopulateWallPosts(theUserId);在Page_Prerender上,而不是在加載和點擊上兩次。

PS你的代碼很容易受到SQL注入和XSS兩者。不要相信用戶的輸入:)

+0

是什麼Page_Prerender?你能鏈接一個例子與我的代碼? – 2011-03-24 13:21:45

+0

它沒有做它加載了罰款兩次負荷的只有兩次,當我點擊出於某種原因 – 2011-03-24 13:23:52

+0

看http://msdn.microsoft.com/en-us/library/ms178472.aspx。 test1.Controls.Clear();只是隱藏真正的問題,無論如何你的數據庫被讀取兩次。掛在Prerender更好,但有另一種方法可以避免兩個數據庫請求: if(!IsPostBack)PopulateWallPosts(theUserId); – vrudkovsk 2011-03-25 13:30:54