C# <;asp:ListBox在我的值的末尾添加零(使用数据库中的浮点)

C# <;asp:ListBox在我的值的末尾添加零(使用数据库中的浮点),c#,asp.net,listbox,C#,Asp.net,Listbox,我最近被指派去更新一个使用asp:listbox控件(我不太擅长处理)的旧项目 设置是将ListBox放置在aspx.page上,并通过DataSource属性填充数据。 填充列表框的列数据库表是activity_points(数据类型float)和activity_title(数据类型string/varchar)。 在我检查列表项的值之前,列表框会被填满,一切看起来都很好 列表框如下所示 <asp:ListBox runat="server" DataSource="<%# Ge

我最近被指派去更新一个使用asp:listbox控件(我不太擅长处理)的旧项目

设置是将ListBox放置在aspx.page上,并通过DataSource属性填充数据。 填充列表框的列数据库表是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>
我已经没有选择了,列表框有什么神奇的地方我错过了吗

非常感谢您的建议


感谢

列表框的值似乎总是得到一个整数的增量值

我认为活动点/活动标题会有重复的值,因此它如何保留索引或了解所选项目我同意,您下拉框中的DataValueField应该是唯一的。奇怪的是,因为它是一个值而不是索引。
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;
}