user3091919 user3091919 - 1 month ago 11
C# Question

Converting From String

string Audit = cmbToDoList.SelectedItem.ToString();
string _TransactionId = Audit;
cAuditTasksEntity transaction = _TransactionId as cAuditTasksEntity;
string trans = Convert.ToString(transaction);

sp.GetTransactionInfo(trans);

string result = (from cAuditTasksEntity transactionid in _TransactionId
select transactionid.TransactionId).ToString();


The section i am getting the error is:
_TransactionId as cAuditTasksEntity;


It is saying that
Cannot convert type 'String' to 'DAL.cAuditTasksEntity via a reference conversion, boxing conversion,unboxing conversion,wrapping conversion, or null type conversion


EDIT:

This is my class that you may need to know?

[Table(Name = "Audit_Tasks")]
public class cAuditTasksEntity
{

private int _TaskId;
private int _AuditUserId;
private string _TransactionId;
private string _TaskTypeId;
private DateTime _Date;
private string _AuditStatus;


[Column(DbType = "INT", IsPrimaryKey = true, IsDbGenerated = true)]
public int TaskId
{
get { return _TaskId; }
set { _TaskId = value; }
}

[Column(DbType = "INT")]
public int AuditUserId
{
get { return _AuditUserId; }
set { _AuditUserId = value; }
}

[Column(DbType = "CHAR(32)")]
public string TransactionId
{
get { return _TransactionId; }
set { _TransactionId = value; }
}

[Column(DbType = "CHAR(32)")]
public string TaskTypeId
{
get { return _TaskTypeId; }
set { _TaskTypeId = value; }
}

[Column(DbType = "DATETIME")]
public DateTime Date
{
get { return _Date; }
set { _Date = value; }
}

[Column(DbType = "VARCHAR(255)")]
public string AuditStatus
{
get { return _AuditStatus; }
set { _AuditStatus = value; }
}
}


What I'm trying to do is; I have
taskId
that shows up in a combobox, when a user selects a task it needs to redirect them to another screen
xamlNewAudit.xaml
where the details of that transaction shows up automatically.

There is a
TaskTable' this hold
TaskId
and
TransactionId`

then when they get redirected I need to search the
TransactionTable
this will shows
Date creation
and other columns.

Answer

The easiest (probably) way to get cAuditTaskEntity transaction, which was selected by the user, is to create an array (or list, or dictionary, or whatever) to bind combobox displayed value to cAuditTaskEntity (via index).

Here is an example (it may be unusable by you, but should give an idea):

class cAuditTaskEntity
{
    public int A;
    public string B;
    ...

    public cAuditTaksEntity() {}
}

// data to fill into a combobox
cAuditTaskEntity[] data = new cAuditTaksEntity[] {new cAuditTaskEntity(), new cAuditTaksEntity(), new cAuditTaskEntity() ... }

// fill combobox, we represent data as a string
for(int i = 0; i < data.Length; i++)
    cmbToDoList.Items.Add(string.Format("Item {0}: {1}, {2}", i, data[i].A, data[i].B));

// reading selected data
// we can't convert represented by a string data back, but we can take it by index from created earlier array
cAuditTasksEntity transaction = data[cmbToDoList.SelectedIndex];

Update

You can override ToString() in your cAuditTaskEntity, so then you can add object directly and get them. Here is an example (create new solution, add combobox and button on a form):

public partial class Form1 : Form
{

    public class A
    {
        public string B;
        public int C;

        public override string ToString()
        {
            return B;
        }
    }

    A[] _a = new A[] { new A() { B = "1", C = 111 }, new A() { B = "2", C = 222 }, new A() { B = "3", C = 333 } };

    public Form1()
    {
        InitializeComponent();
        foreach (A item in _a)
            comboBox1.Items.Add(item);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        var a = comboBox1.Items[comboBox1.SelectedIndex] as A;
        if (a != null)
            MessageBox.Show(string.Format("{0} {1}", a.B, a.C));
    }
}

In any case you cannot convert string -> cAuditTaskEntity, but you can utilize combobox SelectedIndex to find in the array of its Items selected one.

Comments