如何在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

任何想法?

如何在DataRepeater中格式化数字或字符串?

对不起,我的英语不好。

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;
        }