C# 保存ID而不是名称

C# 保存ID而不是名称,c#,asp.net,oracle,C#,Asp.net,Oracle,我有哪个国家的名字。但我不想这样,我想存储国家ID 这是我的密码:- if (!string.IsNullOrEmpty(mkey)) { insertUpdateQuery = "UPDATE B_Order_new SET ShipName = :ShipName, ShipCity = :ShipCity, ShipAddress = :ShipAddress, " + "ShipCo

我有哪个国家的名字。但我不想这样,我想存储国家ID

这是我的密码:-

if (!string.IsNullOrEmpty(mkey))
        {  
          insertUpdateQuery = "UPDATE B_Order_new SET ShipName = :ShipName, ShipCity = :ShipCity, ShipAddress = :ShipAddress, " +
                                 "ShipCountry = :ShipCountry, OrderDate = :OrderDate, Sent = :Sent where MKEY = :MKEY";
        }
        else
        {
            insertUpdateQuery = "INSERT INTO B_Order_new (MKEY, ShipName, ShipCity, ShipAddress, ShipCountry, OrderDate, Sent) " +
                                 "VALUES(:MKEY, :ShipName, :ShipCity, :ShipAddress, :ShipCountry, :OrderDate, :Sent)";
        }

        OracleCommand cmd = new OracleCommand(insertUpdateQuery, myConn);

        var orderedOn = DateTime.ParseExact(orderDate, "dd/MM/yyyy", null);

        cmd.Parameters.Add("MKEY", OracleType.Number).Value = decimal.Parse(mkey).ToString();
        cmd.Parameters.Add("ShipName", OracleType.VarChar).Value = shipName;
        cmd.Parameters.Add("ShipCity", OracleType.VarChar).Value = shipCity;
        cmd.Parameters.Add("ShipAddress", OracleType.VarChar).Value = shipAddress;
        cmd.Parameters.Add("ShipCountry", OracleType.VarChar).Value = shipCountry;
        cmd.Parameters.Add("OrderDate", OracleType.DateTime).Value = orderedOn;
        cmd.Parameters.Add("Sent", OracleType.Char).Value = true;
}
还可以查看select查询,了解如何绑定它

<asp:SqlDataSource ID="sdCombo" runat="server" ConnectionString="<%$ ConnectionStrings:OracleConn %>"
    ProviderName="<%$ ConnectionStrings:OracleConn.ProviderName %>" SelectCommand="SELECT COUNTRY_ID, COUNTRY_NAME from country_test">
</asp:SqlDataSource>

我绑定dropdownlist的gridview

<obout:ComboBox runat="server" ID="ComboBoxEditor" FolderStyle="ComboBox/styles/premiere_blue"
            Width="100%" Height="150" MenuWidth="175" DataSourceID="sdCombo" DataTextField="COUNTRY_NAME"
            DataValueField="COUNTRY_NAME" OpenOnFocus="false">
            <ClientSideEvents OnBlur="persistFieldValue" OnOpen="ComboBox_Open" />
        </obout:ComboBox>

将组合框的
DataValueField=“COUNTRY\u NAME”
替换为
DataValueField=“COUNTRY\u ID”
,这将把COUNTRY\u ID加载到组合框中,然后您可以将组合框的
SelectedValue
分配给
shipCountry
变量,用于存储国家ID

编辑:您可以将其指定为:

shipCountry=ComboBoxEditor.SelectedValue;
cmd.Parameters.Add("ShipCountry", OracleType.VarChar).Value = shipCountry;
将组合框的脚本更改为以下内容:

<obout:ComboBox runat="server" ID="ComboBoxEditor" FolderStyle="ComboBox/styles/premiere_blue" Width="100%" Height="150" MenuWidth="175" DataSourceID="sdCombo" 
DataTextField="COUNTRY_NAME" DataValueField="COUNTRY_ID" OpenOnFocus="false"> 
<ClientSideEvents OnBlur="persistFieldValue" OnOpen="ComboBox_Open" /> </obout:ComboBox>


我已经这样做了,您能详细告诉我进一步的步骤吗。我的意思是写代码我试过你的方法,但是我在前端得到了
CountryID
,但我想
CountryName
在前端,它的ID要保存到数据库中我想你把COUNTRY\u ID都放在了组合框的文本和值字段中,我编辑了我的答案,您可以从中获取ComboBox的正确脚本,该脚本需要格式化为。否,我正确放置了它。请查看此处
,根据此处的OBOUT文档:,您所做的一切都是正确的,但现在如果它不起作用,则需要查看后面的完整脚本和代码,或者您可以尝试一次ASP.NET标准dropdownList。