4

技术:.NET、SQL Server 2008 R2、Winforms

好吧,对于我的生活,我无法弄清楚这一点。

首先,我使用 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"]);
}

也不起作用,数据中继器只是将其改回。

我要这个:

12,123,123.00

我明白了:

12123123

有任何想法吗?

4

3 回答 3

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

于 2012-08-23T12:48:49.130 回答
1

我认为是您的DataTable“历史”将值转换回double. 当列的数据类型是double(我怀疑)时,它接受 a 的字符串表示形式double并将其转换回来。

您应该向您添加一个计算列,DataTable并用数值的字符串表示形式填充它。

i++顺便说一句:你在你的for陈述中忘记了一个。

于 2011-10-05T21:45:24.263 回答
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;
        }
于 2017-08-27T22:07:47.507 回答