asp:ListBox在我的值的末尾添加零(使用来自数据库的float)
本文关键字:float 数据库 添加 ListBox 我的 asp | 更新日期: 2023-09-27 17:53:21
我最近被分配去更新一个使用asp:listbox控件的老项目(我不是很擅长处理)。
设置是将ListBox放置在aspx上。页,并通过DataSource属性用数据填充自身。填充ListBox的列数据库表是activity_points(数据类型为float)和activity_title(数据类型为string/varchar)。列表框被填满了,一切看起来都很好,直到我检查列表项的值。
列表框如下图
<asp:ListBox runat="server" DataSource="<%# GetActivitys(1) %>" DataTextField="activity_title"
DataValueField="activity_points" EnableViewState="true" onchange="DataChanged();SumUpRow(this,true);"
Width="200" CssClass="ddl-activity1" ID="activities_1_1" Rows="1" />
默认方法(我继承的)如下所示
public SqlDataReader GetActivitys(int type)
{
SqlConnection conn = new SqlConnection(umbraco.GlobalSettings.DbDSN);
SqlCommand cmd = new SqlCommand("SELECT * FROM " + DATABASE_TABLE_ACTIVITIES + " WHERE activity_type=" + type.ToString() + " ORDER BY activity_type, activity_sortorder, activity_title", conn);
cmd.Connection.Open();
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
生成的列表项如下所示
<option value="6">testing</option>
<option value="9">testing</option>
<option value="6,5">testing</option>
<option value="5">testing</option>
<option value="7">testing</option>
<option value="4,5">testing</option>
<option value="6.0">testing</option>
<option value="4">testing</option>
<option value="3.0">testing</option>
<option value="6.00">testing</option>
<option value="3,5">testing</option>
<option value="6.000">testing</option>
可以清楚地看到,它混合了点和逗号,如果重复出现相同的值,则在每次出现后添加零。如果我渲染相同的结果集到GridView一切看起来很好!
为了确保从数据库返回的数据是正确的,我创建了一个新方法来转换activity_points列
public DataTable GetActivitys(int type)
{
string query = "SELECT activity_points, activity_title, activity_id FROM " + DATABASE_TABLE_ACTIVITIES + " WHERE activity_type=" + type.ToString() + " ORDER BY activity_type, activity_sortorder, activity_title";
SqlConnection conn = new SqlConnection(umbraco.GlobalSettings.DbDSN);
SqlDataAdapter da = new SqlDataAdapter(query, conn);
DataTable dt = new DataTable();
da.Fill(dt);
/**/
DataTable dtActivity = new DataTable();
DataColumn ActivityCol;
ActivityCol = new DataColumn();
ActivityCol.DataType = Type.GetType("System.String");
ActivityCol.ColumnName = "activity_points";
dtActivity.Columns.Add(ActivityCol);
ActivityCol = new DataColumn();
ActivityCol.DataType = Type.GetType("System.String");
ActivityCol.ColumnName = "activity_title";
dtActivity.Columns.Add(ActivityCol);
ActivityCol = new DataColumn();
ActivityCol.DataType = Type.GetType("System.Int32");
ActivityCol.ColumnName = "activity_id";
ActivityCol.Unique = true;
dtActivity.Columns.Add(ActivityCol);
foreach (DataRow item in dt.Rows)
{
DataRow activityRow = dtActivity.NewRow();
activityRow["activity_points"] = Convert.ToDouble(item["activity_points"]);
activityRow["activity_title"] = item["activity_title"];
activityRow["activity_id"] = item["activity_id"];
dtActivity.Rows.Add(activityRow);
}
return dtActivity;
}
我没有选择了,是不是我错过了列表框的神奇之处?
任何建议都是非常感谢的!
谢谢
似乎列表框的值总是获得整数的增量值