2016-03-23 1 views
1

Ich muss ein Listenfeld erstellen, das 2 Spalten zeigt. Der erste ist ein numerischer Status und der nächste ist die Beschreibung. Der Status kann bis zu 3 Ganzzahlen betragen.Formatieren von 2 Spalten in einem Listenfeld. 1 ist Nummer, der andere Text

Was ich bekommen möchte ist der Status rechts ausgerichtet sein, gefolgt von einem Leerzeichen und dann die Beschreibung.

Effektiv

Code Description 
    1 Descrition for code 1 
10 Descrition for code 10 
100 Descrition for code 100 

Mein Code so weit:

cmd.CommandType = CommandType.StoredProcedure; 
cmd.CommandText = "prc_GetData"; 
cmd.Parameters.Add(new OracleParameter("piCompany", OracleDbType.Char, "01", ParameterDirection.Input)); 
cmd.Connection = con; 

OracleDataAdapter da = new OracleDataAdapter(); 
DataTable dt = new DataTable(); 

con.Open(); 
da.SelectCommand = cmd; 
da.Fill(dt); 

DataColumn dc = new DataColumn("NewCol"); 
dc.Expression = string.Format("{0}+' '+{1}", "NumberCol", "TextCol"); 
dt.Columns.Add(dc); 

ListBox1.DataSource = dt; 
ListBox1.DataValueField = "NumberCol"; 
// ListBox1.DataTextField = (String.Format("{0} {1}", "NumberCol", "TextCol")); 
ListBox1.DataTextField = ("NewCol"); 
ListBox1.DataBind(); 
+0

Wenn Sie das Verfahren „prc_GetData“ ändern können, können Sie NumberCol [Leertaste] TextCol von der gespeicherten Prozedur und binden diese Spalte wählen Datatextfield. – Bikee

Antwort

0

Sie benötigen einen Gridview verwenden, um es auszuführen: Auf diese Weise können Sie eine Tabellenstruktur haben. Sie können auch DataList Kontrolle betrachten.

Sie können auch Ihre Steuerung überschreiben ListBox und Bearbeiten der RenderControl()-Methode, aber es ist schwieriger.

Alternativ können Sie ein jquery-Plugin verwenden. Sie können als verschiedene Typen für eine multicolumns listbox finden:

http://jquery-plugins.net/tag/multi-column

Hoffe, es hilft.

0

ich erreicht dies durch:

using (con) 
{ 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.CommandText = "prc_GetData"; 
    cmd.Parameters.Add(new OracleParameter("piCompany", OracleDbType.Char, "01", ParameterDirection.Input)); 
    cmd.Parameters.Add(new OracleParameter("poRecordset", OracleDbType.RefCursor, ParameterDirection.Output)); 
    cmd.Connection = con; 

    OracleDataAdapter da = new OracleDataAdapter(); 
    DataTable dt = new DataTable(); 

    con.Open(); 
    da.SelectCommand = cmd; 
    da.Fill(dt); 

    dt.Columns.Add("FORMAT_COL", typeof(String)); 

    string space = " "; 
    space = Server.HtmlDecode(space); 

    foreach (DataRow dr in dt.Rows) 
    { 
     dr["FORMAT_COL"] = dr["NumberCol"].ToString().PadLeft(5, Convert.ToChar(space)); 
    } 
    dt.Columns.Add("COMB_COL", typeof(String)); 
    dt.Columns["COMB_COL"].Expression = "FORMAT_COL + ' (' + TextCol + ')'"; 

    ListBox1.DataSource = dt; 
    ListBox1.DataValueField = "NumberCol"; 
    ListBox1.DataTextField = "COMB_COL"; 

    ListBox1.DataBind(); 
}