如何在DataRepeater中格式化数字或字符串?
本文关键字:数字 字符串 格式化 DataRepeater | 更新日期: 2023-09-27 18:10:36
技术:.NET, SQL Server 2008 R2, Winforms
好吧,我怎么也想不明白。
首先,我使用数据表来存储来自SQL server 2008数据库的数据,并将其绑定到DataRepeater。
我试过这样改变绑定:
label1.DataBindings.Add("Text", history, "Value", true, DataSourceUpdateMode.Never, "", "N");
在其他地方的文本框和标签上工作得很好,但在DataRepeater上不行。(label1是与DataRepeater关联的ItemTemplate的一部分)
既然像那样绑定数据不起作用,我想只使用我的DataTable并强制列具有上面列出的格式。
和手动更改数据的格式:(它是一个Float)
for (int i=0;i < history.Rows.Count;i++)
{
history.Rows[i]["Value"] = String.Format("{0:N}", history.Rows[i]["Value"]);
}
也不工作,数据处理程序只是把它改回来。
我想要这个:
12,123,123.00
我得到这个:
12123123
任何想法?
对不起,我的英语不好。
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
。
我认为这是您的DataTable
"历史",将值转换回double
。当列的数据类型为double
(我怀疑)时,它接受double
的字符串表示形式,并将其转换回来。
您应该在DataTable
中添加一个计算列,并用数值的字符串表示形式填充它。
顺便说一句:你在for
语句中忘记了i++
。
如果您想将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;
}