thomasm1948
asked on
SQLDataReder Select dropdownlist value in GridView
Hi,
I am having issues with selecting a value in a dropdownlist that is located in a gridview. My GridView allows for editing and I am trying to have it display the current value that is in my database. Below is my code:
Littile of the HTML portion:
<asp:GridView ID="Users_GridView1" AutoGenerateColumns="False " onrowediting="Users_GridVi ew1_RowEdi ting"
onrowcancelingedit="Users_ GridView1_ RowCanceli ngEdit" OnRowUpdating="Users_GridV iew1_RowUp dating" OnRowDeleting="Users_Gridv iew1_RowDe leting"
runat="server" onselectedindexchanged="Us ers_GridVi ew1_Select edIndexCha nged" >
<Columns>
<asp:TemplateField HeaderText="Edit" ShowHeader="False" HeaderStyle-HorizontalAlig n="Left">
<EditItemTemplate>
<asp:LinkButton ID="lbkUpdate" runat="server" CausesValidation="True" CommandName="Update" Text="Update"></asp:LinkBu tton>
<asp:LinkButton ID="lnkCancel" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel"></asp:LinkBu tton>
<asp:LinkButton ID="lnkDel" CausesValidation="False" CommandName="Delete" Text="Delete" runat="server"></asp:LinkB utton>
</EditItemTemplate>
<ItemTemplate>
<asp:LinkButton ID="lnkEdit" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit"></asp:LinkButt on>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Left" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Access" HeaderStyle-HorizontalAlig n="Left">
<EditItemTemplate>
<asp:DropDownList ID="Acess" runat="server" >
<asp:ListItem Text="Single Site" Value="1" />
<asp:ListItem Text="Multi Site" Value="2" />
<asp:ListItem Text="Admin" Value="3" />
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Access_lbl" runat="server" Text='<%# Bind("Level") %>'></asp:Label>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Left" />
</asp:TemplateField>
Code portion
protected void Users_GridView1_RowEditing (object sender, GridViewEditEventArgs e)
{
Users_GridView1.EditIndex = e.NewEditIndex;
lblError.Text = "";
//showStuff();
try
{
lblError.Text = "";
System.Data.SqlClient.SqlC onnection SqlCon1 = new System.Data.SqlClient.SqlC onnection( );
string sConnSTr1 = null;
sConnSTr1 = WebConfigurationManager.Co nnectionSt rings["Den talEncDB"] .Connectio nString;
SqlCon1.ConnectionString = sConnSTr1;
SqlCon1.Open();
System.Data.SqlClient.SqlC ommand sqlCommand0 = new System.Data.SqlClient.SqlC ommand();
sqlCommand0.CommandType = System.Data.CommandType.St oredProced ure;
sqlCommand0.CommandText = "Select_Members";
sqlCommand0.Connection = SqlCon1;
SqlDataReader reader = sqlCommand0.ExecuteReader( CommandBeh avior.Clos eConnectio n);
Users_GridView1.DataSource = reader;
if (reader.Read())
{
GridViewRow row = (GridViewRow)Users_GridVie w1.Rows[e. NewEditInd ex];
DropDownList ddl = (DropDownList)row.FindCont rol("Acess ");
string test1 = reader[5].ToString();
ddl.Items.FindByValue(test 1).Selecte d = true;
//ddl.SelectedValue = reader[5].ToString();
}
Users_GridView1.DataBind() ;
SqlCon1.Close();
Users_GridView1.HeaderRow. Cells[1].V isible = false;
foreach (GridViewRow gvr in Users_GridView1.Rows)
{
gvr.Cells[1].Visible = false;
}
}
catch (Exception ex)
{
Users_GridView1.Visible = false;
lblError.Text = ex.Message;
}
}
I am having issues with selecting a value in a dropdownlist that is located in a gridview. My GridView allows for editing and I am trying to have it display the current value that is in my database. Below is my code:
Littile of the HTML portion:
<asp:GridView ID="Users_GridView1" AutoGenerateColumns="False
onrowcancelingedit="Users_
runat="server" onselectedindexchanged="Us
<Columns>
<asp:TemplateField HeaderText="Edit" ShowHeader="False" HeaderStyle-HorizontalAlig
<EditItemTemplate>
<asp:LinkButton ID="lbkUpdate" runat="server" CausesValidation="True" CommandName="Update" Text="Update"></asp:LinkBu
<asp:LinkButton ID="lnkCancel" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel"></asp:LinkBu
<asp:LinkButton ID="lnkDel" CausesValidation="False" CommandName="Delete" Text="Delete" runat="server"></asp:LinkB
</EditItemTemplate>
<ItemTemplate>
<asp:LinkButton ID="lnkEdit" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit"></asp:LinkButt
</ItemTemplate>
<HeaderStyle HorizontalAlign="Left" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Access" HeaderStyle-HorizontalAlig
<EditItemTemplate>
<asp:DropDownList ID="Acess" runat="server" >
<asp:ListItem Text="Single Site" Value="1" />
<asp:ListItem Text="Multi Site" Value="2" />
<asp:ListItem Text="Admin" Value="3" />
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Access_lbl" runat="server" Text='<%# Bind("Level") %>'></asp:Label>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Left" />
</asp:TemplateField>
Code portion
protected void Users_GridView1_RowEditing
{
Users_GridView1.EditIndex = e.NewEditIndex;
lblError.Text = "";
//showStuff();
try
{
lblError.Text = "";
System.Data.SqlClient.SqlC
string sConnSTr1 = null;
sConnSTr1 = WebConfigurationManager.Co
SqlCon1.ConnectionString = sConnSTr1;
SqlCon1.Open();
System.Data.SqlClient.SqlC
sqlCommand0.CommandType = System.Data.CommandType.St
sqlCommand0.CommandText = "Select_Members";
sqlCommand0.Connection = SqlCon1;
SqlDataReader reader = sqlCommand0.ExecuteReader(
Users_GridView1.DataSource
if (reader.Read())
{
GridViewRow row = (GridViewRow)Users_GridVie
DropDownList ddl = (DropDownList)row.FindCont
string test1 = reader[5].ToString();
ddl.Items.FindByValue(test
//ddl.SelectedValue = reader[5].ToString();
}
Users_GridView1.DataBind()
SqlCon1.Close();
Users_GridView1.HeaderRow.
foreach (GridViewRow gvr in Users_GridView1.Rows)
{
gvr.Cells[1].Visible = false;
}
}
catch (Exception ex)
{
Users_GridView1.Visible = false;
lblError.Text = ex.Message;
}
}
ASKER
I did catch that and they are pointing to the correct ids.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I figured it out but I still want to post it so that others do not run into the same issue
Also confirm your DDL is named Acess and not Access. I notice one of your labels has an id of Access_lbl.