2011-10-05 80 views
4

技術:.NET,SQL Server 2008 R2,Winforms如何在DataRepeater中格式化數字或字符串?

好吧,對於我的生活,我無法弄清楚這一點。

首先,我使用DataTable來存儲來自SQL Server 2008數據庫的數據,並將其綁定到DataRepeater。

我試圖改變這樣的綁定:

label1.DataBindings.Add("Text", history, "Value", true, DataSourceUpdateMode.Never, "", "N"); 

它適用於文本框和標籤偉大的其他地方,但不上的DataRepeater。 (label1是與DataRepeater關聯的ItemTemplate的一部分)

由於綁定數據這樣不起作用,我只想拿走我的DataTable並強制使列具有上面列出的格式。

而且手動更改數據的格式:(這是一個浮點數)

for (int i=0;i < history.Rows.Count;i++) 
{ 
    history.Rows[i]["Value"] = String.Format("{0:N}", history.Rows[i]["Value"]); 
} 

不工作,要麼,DataRepeater中只是換了回來。

我想這一點:

12,123,123.00 

,我得到這個:

12123123 

任何想法?

回答

1

我認爲這是你的DataTable「歷史」,將數值轉換回double。當列的數據類型是double(我懷疑),那麼它接受double的字符串表示形式,並將其轉換回來。

您應該爲您的DataTable添加一個計算列,並用數字值的字符串表示形式填充它。

順便說一句:您在for聲明中忘記了i++

+0

我會認爲這是一個可行的解決方案,但它不是最好的,當你有大量的數據需要進行格式化。我必須考慮到這一點。讓我們拭目以待,看看有沒有其他解決方案。在我結束之前。此外,它實際上是一個浮點數,我刪除了Convert.To語句,因爲在這種情況下它是多餘的,但是在應用程序的前一部分中使用並複製粘貼。 – Christian

+0

做出這個答案是因爲這是與DataRepeater合作的唯一解決方案 – Christian

2

對不起,我的英語不好。這對我來說很好。

private void textBox10_TextChanged(object sender, EventArgs e) 
{ 
string f = String.Format("{0:#0.00}", Convert.ToDouble(((TextBox)sender).Text)); 
     ((TextBox)sender).Text = f; 
} 

例如:

textBox10.Text= 48
result= 48.00

更改此代碼爲每個其他數據類型。

那使用TextChanged事件的文本框中的Datarepeater

0

如果您想自動將12123123轉換爲12,123,123;把這個代碼在你的文本框的_TextChanged事件:

int i = ((TextBox)sender).SelectionStart; 
     if (((TextBox)sender).Text != "") 
     { 
      string f = String.Format("{0:N0}", Convert.ToDouble(((TextBox)sender).Text)); 
      ((TextBox)sender).Text = f; 
      int len; 
      len = ((TextBox)sender).Text.Replace(",", "").Length; 
      if ((len %= 3) == 1) 
      { 
       i += 1; 
      } 
      ((TextBox)sender).SelectionStart = i; 
     }