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