2013-07-23 3 views
0

Здесь я загружаю данные в CboPorts ComboBox из базы данных, используя dataAdpaters и таблицу Dataset. Эта часть работает без проблемПолучение выбранного значения привязки данных к каталогу

public void LoadPorts(string portpath) 
{ 
    //Loads Existing ClientGroups from specified tables 

    string tablename = portpath; 
    SqlConnection sqlConnectionCmdString = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Rick\Documents\Visual Studio 2010\Projects\Server\database\ClientRegit.mdf;Integrated Security=True;User Instance=True"); 

    //Properly Defines the string for naming the table according to the systems naming scheme 
    string Command = "SELECT Port FROM [" + tablename + "]"; 

    SqlCommand sqlCommand = new SqlCommand(Command, sqlConnectionCmdString); 

    SqlDataAdapter objDA = new SqlDataAdapter(sqlCommand); 

    DataSet dsGroups = new DataSet(); 

    objDA.Fill(dsGroups, "dtGroup"); 

    cboPorts.DataSource = dsGroups.Tables["dtGroup"]; 
    cboPorts.DisplayMember = "Port"; 
    cboPorts.ValueMember = "Port"; 
} 

Это где я пытаюсь разобрать CboPorts ComboBox, используя метод CboPorts.SelectedItem.Tostring() он держит возвращается с Null сделать, чтобы DataView = {System.Data. DataRowView} Это все идут в Debugger Value Intel-Sense

private void cboPorts_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string xmlpath = @"C:\[...]" + cboNetGuid.SelectedItem.ToString() + ".xml"; 

    XElement main = XElement.Load(xmlpath); 

    //This is where it's supposed to parse the Selected Item of the combo box 
    string SelectedPort = cboPorts.SelectedItem.ToString(); 

    //Linq query for searching IP address by ID Attributes 
    IEnumerable<XElement> searched = 
     from ip in main.XPathSelectElements("Row/ip_addresses") 
     where (string)ip.Attribute("id") == SelectedPort //<--Passes the Value Here 
     select ip; 

    //Get the Ip from the selected port number 
    foreach (string ips in searched) 
    { 
     Network_IP = ips.ToString(); 
    } 

    //Linq Query to assign attributes to xml server data file 
    IEnumerable<XElement> SearchedAttr = 
     from proto in main.XPathSelectElements("Row/protocols") 
     where (string)proto.Attribute("id") == SelectedPort 
     select proto; 

    foreach (string protos in SearchedAttr) 
    { 
     lstproto = protos.ToString(); 
    } 

    //Linq query for searching security requests 
    IEnumerable<XElement> SearchedSec = 
     from Secure in main.XPathSelectElements("Row/security") 
     where (string)Secure.Attribute("id") == SelectedPort 
     select Secure; 

    foreach (string Secur in SearchedSec) 
    { 
     Security = Secur.ToString(); 
    } 
    //Linq query for searching created dates 
    IEnumerable<XElement> SearchedCret = 
     from created in main.XPathSelectElements("Row/creation_date ") 
     where (string)created.Attribute("id") == SelectedPort 
     select created; 

    foreach (string Cret in SearchedCret) 
    { 
     Created = Cret.ToString(); 
    } 
    //Define Channeling Form for Log Synchronizations 
    //Adds the data to the form 
    cboIP.Items.Add(Network_IP); 
    cboIP.SelectedIndex = 0; 
    cboProtocols.Items.Add(lstproto); 
    cboProtocols.SelectedIndex = 0; 
    if (Security == "YES") 
    { 
     cboEncrypt.SelectedIndex = 0; 
    } 
    else if (Security == "NO") 
    { 
     cboEncrypt.SelectedIndex = 1; 
    } 
} 

Я имею странный Визуальная Bug Studio Express, я не уверен, что происходит, но это должно работать, я не знаю, почему но я объясню в своем коде. Я не уверен, есть ли другой способ справиться с этим методом.

+0

какой-либо элемент выбивки? – Ehsan

+0

Да, он загружает значения. В поле со списком я должен выбрать одно из этих значений. – shawn

+0

im не уверен, как получить таблицу привязки данных с помощью метода GetItemText, это похоже на этот cboPorts.GetItemText (MYDATAITEM); – shawn

ответ

0

следует применять A Проверить

//check if user has selected anything 
if(cboPorts.SelectedIndex < 0) 
return; 

var row = (DataRowView)cboPorts.SelectedItem; 
string SelectedPort = row[0].ToString(); 
+0

Нет, не работает. Мне нужно получить значение selecteditem, потому что в Combo Box загружено более одного значения, проблема в том, что он не разбирает его. – shawn

+0

Я не уверен, что проблема может быть из-за того, что я использую привязку данных или что-то такое, что меня смущает, потому что этот процесс работает, и внезапно, когда я изменил способ загрузки данных в комбо, это не сработало. – shawn

+0

Что я Я пытаюсь понять, использую ли я источник данных в Combo Box, так как предполагается, что я могу использовать метод cboPorts.SelectedItem.Tostring(), чтобы получить выбранное значение из поля со списком. – shawn

2

я нашел парень спасибо, даже если вы хотите сделать это в вашем коде, это как сделать это.

DataRowView drow = (DataRowView)cboPorts.SelectedItem; 

      SelectedPort = drow.Row.ItemArray[0].ToString(); 
Смежные вопросы