In DataList ItemdataBound event, how to access by column name instead of by ItemArray index

Michael picture Michael · Feb 6, 2011 · Viewed 13k times · Source

In the following code, strUsername is always returning as an empty string "" (and so are other columns).

However if I use ItemArray and access it by passing the column index, it works fine. How to access by column name instead of index?

 protected void dlst_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item ||
             e.Item.ItemType == ListItemType.AlternatingItem)
            {
                if (e.Item.DataItem != null)
                {
                    string strUsername = DataBinder.Eval(e.Item.DataItem, "Username").ToString(); -----> this returns as an empty string


                }
            }

Answer

Dan picture Dan · Aug 15, 2012

Answer is here: ItemDataBound 'e.item.dataitem("key")' with ListView Control

Also, DataBinder.Eval is not usable in ItemDataBound.