Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从下拉列表中的DataSource表访问其他列?_C#_Asp.net_Sql_Sql Server_Webforms - Fatal编程技术网

C# 如何从下拉列表中的DataSource表访问其他列?

C# 如何从下拉列表中的DataSource表访问其他列?,c#,asp.net,sql,sql-server,webforms,C#,Asp.net,Sql,Sql Server,Webforms,我有一个有10列的国家表。我已经将CityName作为DataTextField分配给我的DropDownList和Id作为DataValueField。现在,在SelectedIndexChanged上,我必须从其他列(如CityCode)中获取值。我怎样才能访问它 ddlCity.DataSource = cboxTeam_DS.Tables["MyTable"]; ddlCity.DataTextField = "CityName"; ddlCity.DataValueField= "I

我有一个有10列的国家表。我已经将CityName作为
DataTextField
分配给我的
DropDownList
Id作为
DataValueField
。现在,在
SelectedIndexChanged
上,我必须从其他列(如CityCode)中获取值。我怎样才能访问它

ddlCity.DataSource = cboxTeam_DS.Tables["MyTable"];
ddlCity.DataTextField  = "CityName";
ddlCity.DataValueField= "Id";
ddlCity.DataBind();

SelectedIndexChanged
方法中,如何访问CityCode列值?

您没有将
CityCode
列绑定到下拉列表中。
下拉列表
的数据保存在
视图状态
中,不知道其他列。在桌面上,我们可以从组合框(下拉菜单)中获取对象,但在asp.net中,我们不能。这可能是为了使ViewState尽可能小

您可以选择其中一种方法来完成所需的任务

  • 您可以获取
    id
    并发送数据库调用以检索
    SelectedIndexChanged
    中的
    CityCode

  • 您可以将id\u CityCode等两列组合在一起,生成
    列,然后提取所需内容


    • 您没有将
      CityCode
      列绑定到下拉列表。
      下拉列表
      的数据保存在
      视图状态
      中,不知道其他列。在桌面上,我们可以从组合框(下拉菜单)中获取对象,但在asp.net中,我们不能。这可能是为了使ViewState尽可能小

      您可以选择其中一种方法来完成所需的任务

      • 您可以获取
        id
        并发送数据库调用以检索
        SelectedIndexChanged
        中的
        CityCode

      • 您可以将id\u CityCode等两列组合在一起,生成
        列,然后提取所需内容


      您可以直接从数据源获取

       int CityId = (int)ddlCity.SelectedValue;
          DataTable dt = cboxTeam_DS.Tables["MyTable"];
          string CityCode = (from DataRow dr in dt.Rows
                    where (int)dr["Id"] == CityId 
                    select (string)dr["CityCode"]).FirstOrDefault();
      

      您可以直接从数据源获取

       int CityId = (int)ddlCity.SelectedValue;
          DataTable dt = cboxTeam_DS.Tables["MyTable"];
          string CityCode = (from DataRow dr in dt.Rows
                    where (int)dr["Id"] == CityId 
                    select (string)dr["CityCode"]).FirstOrDefault();
      

      我可以向你推荐两种方法

    • 您可以再存储一个隐藏下拉列表,其中包含您的Id和城市代码。因此,每当您选择原始下拉列表时,请从该隐藏下拉列表中选择适当的值
    • 第二种方法是当您从城市中获取ID时。SelectedValue您需要使用条件再次检索表,并在表中以该值为参考进行搜索以获取城市代码

    • 我宁愿你去买第一个。在第一种情况下,您还可以使用javascript访问隐藏的下拉列表。

      我可以推荐两种方法

    • 您可以再存储一个隐藏下拉列表,其中包含您的Id和城市代码。因此,每当您选择原始下拉列表时,请从该隐藏下拉列表中选择适当的值
    • 第二种方法是当您从城市中获取ID时。SelectedValue您需要使用条件再次检索表,并在表中以该值为参考进行搜索以获取城市代码

    • 我宁愿你去买第一个。您还可以使用javascript访问第一种情况下的隐藏下拉列表。

      这是我为解决此问题而开发的解决方案,它对我非常有效

      我做的第一件事就是更改了数据库查询

      它返回一个表,其中包含一个名为
      idCode
      的额外列

      由于
      id
      是int,而
      CityCode
      是nvarchar,因此我转换id列并获得一个额外的列,其中包含两列的值

      在我的代码中,我已将
      idCode
      列指定给我的
      ddlCity.DataValueField

      ddlCity.DataSource = cboxTeam_DS.Tables["MyTable"];
      ddlCity.DataTextField  = "CityName";
      ddlCity.DataValueField = "idCode";
      ddlCity.DataBind();
      
      之后,我使用逗号拼接将字符串拆分为
      id
      code
      数组

      string[] strArray = this.ddlCity.SelectedValue.Split(',');
      
      然后通过访问索引在我想使用它的地方使用它

      int myId = strArray[0];
      string myCode = strArray[1];
      

      这是我为解决这个问题而开发的解决方案,对我来说非常有效

      我做的第一件事就是更改了数据库查询

      它返回一个表,其中包含一个名为
      idCode
      的额外列

      由于
      id
      是int,而
      CityCode
      是nvarchar,因此我转换id列并获得一个额外的列,其中包含两列的值

      在我的代码中,我已将
      idCode
      列指定给我的
      ddlCity.DataValueField

      ddlCity.DataSource = cboxTeam_DS.Tables["MyTable"];
      ddlCity.DataTextField  = "CityName";
      ddlCity.DataValueField = "idCode";
      ddlCity.DataBind();
      
      之后,我使用逗号拼接将字符串拆分为
      id
      code
      数组

      string[] strArray = this.ddlCity.SelectedValue.Split(',');
      
      然后通过访问索引在我想使用它的地方使用它

      int myId = strArray[0];
      string myCode = strArray[1];
      

      我建议使用ID,再次检索数据库中所需的字段。这样可以节省时间和精力。这就是我解决问题的方法。

      我建议使用ID,再次检索数据库中所需的字段。这样可以节省时间和精力。这就是我解决问题的方法。

      你想获得所选城市的
      CityCode
      吗?你可以通过传递下拉列表中选中的
      Id
      从数据库中获得
      CityCode
      。你想获得所选城市的
      CityCode
      吗?你可以通过传递下拉列表中选中的
      Id
      从数据库中获得
      CityCode>。你可以通过组合两列(如id\u CityCode)生成值列,然后提取所需内容。您可以通过组合两列(如id\u CityCode)生成值列,然后提取所需内容。