如何在 C# 代码中存储 RadComboBox 选定值?
how can I store the RadComboBox selected value in C# code?
我的 RadComboBox
应该会下拉并为我显示 select 的选项。选项是名称,但 selected 值是与中心 ID 对应的数字。
<telerik:RadComboBox DataValueField="OPERATION_CENTER_ID" RenderingMode="Full" EmptyMessage="Select Operation Center" DataTextField="OPERATION_CENTER_NAME" ID="RadComboBox1" runat="server"></telerik:RadComboBox>
protected void rdOrders_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e) {
//Get OPERATION_CENTER_ID in f1 from f2 query (it is an int)
string f2 = "select * from [dbo].[GetOperationCentersInfo]('F')";
SQLHelper a = new SQLHelper(SQLHelper.ConnectionStrings.EmallShippingConnectionString);
int ID = RadComboBox1.SelectedValue; {
string f1 = "select * from [dbo].[GetReadyDeliveryOrderItems](" + ID + ")";
DataTable DataTable1 = a.getQueryResult(f1); //Orders Query by OPERATION_CENTER_ID
DataTable DataTable2 = a.getQueryResult(f2); //Operation centers Query
DataTable testDataTable = new DataTable();
rdOrders.DataSource = DataTable1;
RadComboBox1.DataSource = DataTable2;
RadComboBox1.DataBind();
}
基本上,当用户 select 从 RadComboBox1
获取值时,我想将该值存储在 int
变量中。
希望绑定网格时DataValueField
赋值,Value可转换为整数。那么我建议这个转换是int.TryParse
,这样你就可以通过它的return值来判断转换是否成功。请看下面的代码:
int ID;
if(Int32.TryParse(RadComboBox1.SelectedValue,out ID))
{
// You can proceed with ID
}
else
{
// Conversion failed
}
是否有任何特殊原因要求您必须在 NeedDataSource
事件中对 RadComboBox
控件进行数据绑定?由于 page/control 的生命周期,这不能保证您的 RadComboBox
控件将被正确加载。
您可以做的是将您的数据绑定代码添加到 Page_Load
事件中,如下所示。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindRadComboBox();
}
}
private void BindRadComboBox()
{
string f2 = "select * from [dbo].[GetOperationCentersInfo]('F')";
SQLHelper a = new SQLHelper(SQLHelper.ConnectionStrings.EmallShippingConnectionString);
int ID = RadComboBox1.SelectedValue; {
string f1 = "select * from [dbo].[GetReadyDeliveryOrderItems](" + ID + ")";
DataTable DataTable1 = a.getQueryResult(f1); //Orders Query by OPERATION_CENTER_ID
DataTable DataTable2 = a.getQueryResult(f2); //Operation centers Query
DataTable testDataTable = new DataTable();
rdOrders.DataSource = DataTable1;
RadComboBox1.DataSource = DataTable2;
RadComboBox1.DataBind();
}
您需要仔细检查获取数据的代码。同样对于将字符串转换为整数,请参考倒霉的答案,这是推荐的做法。
希望这对您有所帮助。
我的 RadComboBox
应该会下拉并为我显示 select 的选项。选项是名称,但 selected 值是与中心 ID 对应的数字。
<telerik:RadComboBox DataValueField="OPERATION_CENTER_ID" RenderingMode="Full" EmptyMessage="Select Operation Center" DataTextField="OPERATION_CENTER_NAME" ID="RadComboBox1" runat="server"></telerik:RadComboBox>
protected void rdOrders_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e) {
//Get OPERATION_CENTER_ID in f1 from f2 query (it is an int)
string f2 = "select * from [dbo].[GetOperationCentersInfo]('F')";
SQLHelper a = new SQLHelper(SQLHelper.ConnectionStrings.EmallShippingConnectionString);
int ID = RadComboBox1.SelectedValue; {
string f1 = "select * from [dbo].[GetReadyDeliveryOrderItems](" + ID + ")";
DataTable DataTable1 = a.getQueryResult(f1); //Orders Query by OPERATION_CENTER_ID
DataTable DataTable2 = a.getQueryResult(f2); //Operation centers Query
DataTable testDataTable = new DataTable();
rdOrders.DataSource = DataTable1;
RadComboBox1.DataSource = DataTable2;
RadComboBox1.DataBind();
}
基本上,当用户 select 从 RadComboBox1
获取值时,我想将该值存储在 int
变量中。
希望绑定网格时DataValueField
赋值,Value可转换为整数。那么我建议这个转换是int.TryParse
,这样你就可以通过它的return值来判断转换是否成功。请看下面的代码:
int ID;
if(Int32.TryParse(RadComboBox1.SelectedValue,out ID))
{
// You can proceed with ID
}
else
{
// Conversion failed
}
是否有任何特殊原因要求您必须在 NeedDataSource
事件中对 RadComboBox
控件进行数据绑定?由于 page/control 的生命周期,这不能保证您的 RadComboBox
控件将被正确加载。
您可以做的是将您的数据绑定代码添加到 Page_Load
事件中,如下所示。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindRadComboBox();
}
}
private void BindRadComboBox()
{
string f2 = "select * from [dbo].[GetOperationCentersInfo]('F')";
SQLHelper a = new SQLHelper(SQLHelper.ConnectionStrings.EmallShippingConnectionString);
int ID = RadComboBox1.SelectedValue; {
string f1 = "select * from [dbo].[GetReadyDeliveryOrderItems](" + ID + ")";
DataTable DataTable1 = a.getQueryResult(f1); //Orders Query by OPERATION_CENTER_ID
DataTable DataTable2 = a.getQueryResult(f2); //Operation centers Query
DataTable testDataTable = new DataTable();
rdOrders.DataSource = DataTable1;
RadComboBox1.DataSource = DataTable2;
RadComboBox1.DataBind();
}
您需要仔细检查获取数据的代码。同样对于将字符串转换为整数,请参考倒霉的答案,这是推荐的做法。
希望这对您有所帮助。