Ghaleon Ghaleon - 22 hours ago 2
ASP.NET (C#) Question

How do I set a DataSource to a DropDownList?

I read some of the others threads and didnt work out for me =\
I have a

GridView
with a
DropDownList
in one field. I'd like to know How may I set a
DataSource
for that ? I'm not using Templates neither ItemTemplate or EditItemTemplate I don't know how it work exactly , so i'm not using it yet.

So far I have only created the GridView And filled the fields with data but I don't know how to do the same for the
DropDownList
. SOmething is missing I guess, it is giving me an error (
"The Reference of the Object was not set as an instance of an object"
)

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
DropDownList Drop_Prioridades = (DropDownList)e.Row.FindControl("Drop_Prioridades");
Drop_Prioridades.DataTextField = "BAIXA";
Drop_Prioridades.DataValueField = "1";
Drop_Prioridades.DataTextField = "MEDIA";
Drop_Prioridades.DataValueField = "2";
Drop_Prioridades.DataTextField = "ALTA";
Drop_Prioridades.DataValueField = "3";
Drop_Prioridades.DataBind();
}


I Also tried this / Same error =\

DataSet ds = func.LoadPriority();

foreach (DataRow row in ds.Tables[0].Rows)
{
ListItem item = new ListItem();
item.Text = row["prioridade"].ToString();
item.Value = row["id"].ToString();
DropDownList ddlPrioridades = (DropDownList)e.Row.FindControl("Drop_Prioridades");
ddlPrioridades.Items.Add(item);
}


And Tried this too...

HTML:

<columns>

<asp:TemplateField HeaderText="PRIORIDADE" ItemStyle-HorizontalAlign="Center" HeaderStyle-Width="100px">
<ItemTemplate>
<asp:DropDownList ID="Drop_Prioridades" Width="120px" runat="server" ></asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>


Code Behind:

DataSet ds = func.CarregaPrioridade();
DropDownList ddlist = (DropDownList)e.Row.FindControl("Drop_Prioridades");
ddlist.DataSource = ds;
ddlist.DataTextField = "prioridade";
ddlist.DataValueField = "id";

Answer

I solved my problem like this:

DataSet ds = SomeMethodToFillTheDataSet()

foreach(DataRow row in ds.tables[0].Rows)
{
  ListItem item = new ListItem();
  item.text = "fieldName";  e.g  Name
  item.value = "FieldName"; e.g  ID
  DropDOwnList.Items.Add(item);
}