944,150 Members | Top Members by Rank

Ad:
  • ASP.NET Discussion Thread
  • Unsolved
  • Views: 7422
  • ASP.NET RSS
Jul 7th, 2006
0

DropDownList headache

Expand Post »
Hi,

I've been trying to get this to work for hours to no avail (at least they're paying me :cheesy: ). I have a DropDownList that obtains its values from a database. The DropDownList will not retain it's values when a Postback is done (caused by a submit button being pressed), and I cannot use the .selectedindex or .selectedvalue properties in my coding, which are both very important. I think the reason this is happening is that the list binds the data to itself each time the page loads and the Load event occurs before all Postback Events, thus the dropdownlist is completely reset before the button's click event occurs. How can I work around this and use obtain the dropdownlist values I need?

-James Waltz
Reputation Points: 10
Solved Threads: 0
Light Poster
ChimpusDupus is offline Offline
47 posts
since Jul 2006
Jul 7th, 2006
0

Re: DropDownList headache

Hoo hoo I love these easy peasy ones!!

You need to check for postback, if first request (not a postback) bind the data
c#
ASP.NET Syntax (Toggle Plain Text)
  1. if(!IsPostBack)
  2. {
  3. dropDownList.DataSource = GetData(); //however your using ADO
  4. dropDownList.DataBind();
  5. }

VB
ASP.NET Syntax (Toggle Plain Text)
  1. If Not Page.IsPostback Then
  2. DropDownList.DataSource = GetData() //ADO blah
  3. DropDownList.DataBind()
  4. End If
Last edited by hollystyles; Jul 7th, 2006 at 5:14 pm.
Reputation Points: 262
Solved Threads: 68
Veteran Poster
hollystyles is offline Offline
1,181 posts
since Feb 2005
Jul 7th, 2006
0

Re: DropDownList headache

I tried something similar to this I think but I still couldn't obtain the value from the dropdown list and the dropdown list was blank after the PostBack. Though I'll try it again and see what happens I guess...
Reputation Points: 10
Solved Threads: 0
Light Poster
ChimpusDupus is offline Offline
47 posts
since Jul 2006
Jul 7th, 2006
0

Re: DropDownList headache

unlikely but is your veiwstate property disabled? for that page or just that control ?
Reputation Points: 262
Solved Threads: 68
Veteran Poster
hollystyles is offline Offline
1,181 posts
since Feb 2005
Jul 8th, 2006
0

Re: DropDownList headache

also, if your control is inside another control (eg table) viewstate needs to be enabled for that too
Reputation Points: 14
Solved Threads: 19
Posting Pro in Training
campkev is offline Offline
484 posts
since Jul 2005
Jul 10th, 2006
0

Re: DropDownList headache

I just checked and everything related to that DropDownList has the viewstate enabled.
Reputation Points: 10
Solved Threads: 0
Light Poster
ChimpusDupus is offline Offline
47 posts
since Jul 2006
Jul 10th, 2006
0

Re: DropDownList headache

1. Did you try the IsPostBack check again? it's not clear from your replies if you gave that a second try.

2. If you can post your aspx and your aspx.vb/cs code we have a chance of figuring out your problem.
Reputation Points: 262
Solved Threads: 68
Veteran Poster
hollystyles is offline Offline
1,181 posts
since Feb 2005
Jul 10th, 2006
0

Re: DropDownList headache

I did try to add the IsPostBack check again, and it seems to conserve the DropDownList values, but not the selected information (.selectedvalue, .selectedtext, and .selectedindex). As far as my code, happy reading :

.aspx page
<%@ Page Language="VB" MasterPageFile="~/lib/Normal.master" AutoEventWireup="false" CodeFile="reflinks.aspx.vb" Inherits="resources_reflinks" title="Reference Links - Zekiah Technologies Intranet" EnableViewState="true"%>
<asp:ContentID="Content1"ContentPlaceHolderID="Body"Runat="Server">
 
<asp:Table ID="tblLinks" runat="server" Width="99.5%" CellSpacing="0" BorderWidth="1" BorderColor="Black" BorderStyle="Solid">
<asp:TableHeaderRow BackColor="gray" ForeColor="white">
<asp:TableCell columnspan="6">
:: REFERENCE LINKS ::
</asp:TableCell>
</asp:TableHeaderRow>

<asp:Tablerow>
<asp:TableCell ColumnSpan="6">
&nbsp; <asp:Label ID="lblAddMessage" runat="server" Text="Label" ForeColor="red" Font-Bold="true" Visible="false"></asp:Label>
</asp:TableCell>
</asp:Tablerow>

<asp:TableRow>
<asp:TableCell HorizontalAlign="center" Width="50%" ColumnSpan="6">
Select a Topic:
<asp:DropDownList ID="TopicDrop" runat="server" DataSourceID="SqlDataSource1" DataTextField="ref_topic_name" DataValueField="ref_topic_id" AutoPostBack="True" AppendDataBoundItems="true">
<asp:ListItem Value="0" Selected="true" Text="- All Topics -" />
</asp:DropDownList>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow BackColor="gray" ForeColor="white">
<asp:TableCell Width="10%">
&nbsp; 
</asp:TableCell>
<asp:TableCell HorizontalAlign="left" Width="10%">
TOPIC
</asp:TableCell>
<asp:TableCell HorizontalAlign="left" Width="40%">
LINK
</asp:TableCell>
<asp:TableCell HorizontalAlign="left" Width="20%">
DESCRIPTION
</asp:TableCell>
<asp:TableCell HorizontalAlign="left" Width="10%">
DATE
</asp:TableCell>
<asp:TableCell HorizontalAlign="left" Width="10%">
USER
</asp:TableCell>
</asp:TableRow>
<asp:TableRow>
<asp:TableCell ColumnSpan="6">
<asp:Label ID="lblNoLink" runat="server" Text="Label" ForeColor='Red' Font-Bold="true" Visible="false">There are no FAQs for your selected topic!</asp:Label>
</asp:TableCell>
</asp:TableRow>
</asp:Table>
<input id="btnAdd" type="button" value="Add" runat="server" class="btnSubmitType" onmouseover="this.className = 'btnSubmitHov'" onmouseout="this.className='btnSubmitType'" validationgroup="AddLink"/>
<asp:DropDownList ID="TopicDrop2" runat="server" DataTextField="ref_topic_name"
DataValueField="ref_topic_id" AppendDataBoundItems="true" ValidationGroup="AddLink">
<asp:ListItem Value="0" Selected="True" Text="- Topic -" />
</asp:DropDownList>
<asp:TextBox ID="txtLink" runat="server" ValidationGroup="AddLink"></asp:TextBox>
<asp:TextBox ID="txtDescription" runat="server" ValidationGroup="AddLink"></asp:TextBox>&nbsp;
<asp:SqlDataSourceID="SqlDataSource1"runat="server"ConnectionString="<%$ ConnectionStrings:sysObjDBConnectionString %>"
SelectCommand="SELECT * FROM REFERENCE_TOPIC ORDER BY ref_topic_name">
</asp:SqlDataSource>
 
</asp:Content>

.aspx.vb
PartialClass resources_reflinks
Inherits System.Web.UI.Page
Protected Sub Page_LoadComplete(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LoadComplete
If Not IsPostBack Then
TopicDrop2.DataSource = SqlDataSource1
TopicDrop2.DataBind()
ShowLinks(0)
End If
End Sub
 
Sub ShowLinks(ByVal Topic As Integer)
Dim Conn As New Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("sysObjDBConnectionString").ConnectionString)
Dim CmdLink As New Data.SqlClient.SqlCommand("SELECT t.ref_topic_name, r.ref_link_url, r.ref_link_desc, r.ref_link_update_dt, ua.lastName, ua.firstName FROM REFERENCE_LINK as r LEFT OUTER JOIN REFERENCE_TOPIC as t ON r.ref_topic_id = t.ref_topic_id INNER JOIN userAccounts as ua ON r.userUID = ua.userUID", Conn)
Dim DRLink As Data.SqlClient.SqlDataReader
Dim TR As TableRow
Dim TC As TableCell
Dim lnk As HyperLink
Conn.Open()
If Topic <> 0 Then
CmdLink.CommandText = "SELECT t.ref_topic_name, r.ref_link_url, r.ref_link_desc, r.ref_link_update_dt, ua.lastName, ua.firstName FROM REFERENCE_LINK as r LEFT OUTER JOIN REFERENCE_TOPIC as t ON r.ref_topic_id = t.ref_topic_id INNER JOIN userAccounts as ua ON r.userUID = ua.userUID WHERE r.ref_topic_id = " & Topic
End If
DRLink = CmdLink.ExecuteReader
If DRLink.Read Then
Dim CColor As Drawing.Color = Drawing.Color.LightBlue
Dim OColor As Drawing.Color = Drawing.Color.White
Dim TColor As Drawing.Color
Do
TR = New TableRow
TR.BackColor = CColor
TR.Font.Size = FontUnit.Smaller
TC = New TableCell
TC.HorizontalAlign = HorizontalAlign.Left
TC.Text = "&nbsp;"
TR.Cells.Add(TC)
TC = New TableCell
TC.HorizontalAlign = HorizontalAlign.Left
TC.Text = DRLink(0)
TR.Cells.Add(TC)
TC = New TableCell
TC.HorizontalAlign = HorizontalAlign.Left
lnk = New HyperLink
lnk.Text = DRLink(1)
lnk.NavigateUrl = DRLink(1)
TC.Controls.Add(lnk)
TR.Cells.Add(TC)
TC = New TableCell
TC.HorizontalAlign = HorizontalAlign.Left
TC.Text = DRLink(2)
TR.Cells.Add(TC)
TC = New TableCell
TC.HorizontalAlign = HorizontalAlign.Left
TC.Text = Left(DRLink(3), 10)
TR.Cells.Add(TC)
TC = New TableCell
TC.HorizontalAlign = HorizontalAlign.Left
TC.Text = DRLink(5) & ", " & DRLink(4)
TR.Cells.Add(TC)
tblLinks.Rows.Add(TR)
TColor = CColor
CColor = OColor
OColor = TColor
Loop While DRLink.Read
lblNoLink.Visible = False
Else
lblNoLink.Visible = True
End If
'Footer for Reference additions
TR = New TableFooterRow
TR.BackColor = Drawing.Color.Gray
'***Add Button***
TC = New TableCell
TC.HorizontalAlign = HorizontalAlign.Left
TC.Controls.Add(btnAdd)
TC.HorizontalAlign = HorizontalAlign.Center
TR.Cells.Add(TC)
TC = New TableCell
'***Add DropDown for topic***
TC.HorizontalAlign = HorizontalAlign.Left
TC.Controls.Add(TopicDrop2)
TR.Cells.Add(TC)
'***Add link textbox for adding links***
TC = New TableCell
txtLink.Width = Unit.Percentage(80.0)
TC.HorizontalAlign = HorizontalAlign.Left
TC.Controls.Add(txtLink)
TR.Cells.Add(TC)
'***Add description textbox for adding links***
TC = New TableCell
txtDescription.Width = Unit.Percentage(80.0)
TC.HorizontalAlign = HorizontalAlign.Left
TC.Controls.Add(txtDescription)
TR.Cells.Add(TC)
'***Spaces***
TC = New TableCell
TC.HorizontalAlign = HorizontalAlign.Left
TC.Text = "&nbsp;"
TR.Cells.Add(TC)
TC = New TableCell
TC.HorizontalAlign = HorizontalAlign.Left
TC.Text = "&nbsp;"
TR.Cells.Add(TC)
tblLinks.Rows.Add(TR)
DRLink.Close()
Conn.Close()
lblAddMessage.Visible = False
End Sub
Protected Sub TopicDrop_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TopicDrop.SelectedIndexChanged
ShowLinks(Val(TopicDrop.SelectedValue))
End Sub
Protected Sub btnAdd_ServerClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAdd.ServerClick
ShowLinks(Val(TopicDrop.SelectedValue))
If TopicDrop2.SelectedIndex = 0 Then
lblAddMessage.Visible = True
lblAddMessage.Text = "Please select a topic below for your link."
ElseIf txtLink.Text = "" Then
lblAddMessage.Visible = True
lblAddMessage.Text = "Please input a URL below for your link."
ElseIf txtDescription.Text = "" Then
lblAddMessage.Visible = True
lblAddMessage.Text = "Please write a short description below for your link."
Else
Dim Conn As New Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("sysObjDBConnectionString").ConnectionString)
Dim Cmd As New Data.SqlClient.SqlCommand("INSERT REFERENCE_LINKS (ref_topic_id, ref_link_url, ref_link_desc, ref_link_update_dt, userUID) VALUES(" & TopicDrop2.SelectedValue & ",'" & txtLink.Text & "','" & txtDescription.Text & "', CURRENT_TIMESTAMP, " & User.Identity.Name & ")", Conn)
'Cmd.ExecuteNonQuery()
lblAddMessage.Visible = True
lblAddMessage.Text = "Link added successfully!"
End If
End Sub
Protected Sub TopicDrop2_DataBinding(ByVal sender As Object, ByVal e As System.EventArgs) Handles TopicDrop2.DataBinding
End Sub
Protected Sub TopicDrop2_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles TopicDrop2.DataBound
End Sub
EndClass
Reputation Points: 10
Solved Threads: 0
Light Poster
ChimpusDupus is offline Offline
47 posts
since Jul 2006
Jul 10th, 2006
0

Re: DropDownList headache

Looks like I'm having the same problem on another page with another list-related control. It seems that lists do not want retain their selected value information on for postbacks (unless they initiate the postback). It might have something to do with the fact that the controls are being binded to data each time the page is loaded; however, when I tried to keep it from doing this, the control still did not retain the pertinent information. -_-
Reputation Points: 10
Solved Threads: 0
Light Poster
ChimpusDupus is offline Offline
47 posts
since Jul 2006
Jul 10th, 2006
0

Re: DropDownList headache

Just now figured it out after about 2 days of trying things. The problem was caused by the fact that I was programmatically 'moving' the lists into a table. When that happens, I think the control is being copied, minus the selected values. It works perfectly if the list is already inside its containing control, in this case the table.
Reputation Points: 10
Solved Threads: 0
Light Poster
ChimpusDupus is offline Offline
47 posts
since Jul 2006

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in ASP.NET Forum Timeline: Complete Asp.net tutorials from basic to Advanced
Next Thread in ASP.NET Forum Timeline: Having problems working wth Database software





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC