![]() |
|
|
|||||||
![]() |
ASP Net - HtmlSelect and RequiredFieldValidator |
|
|
Thread Tools | Search this Thread |
|
|
#1 |
|
I'm having a really strange problem with and HtmlSelect server control
(listbox) and a RequiredFieldValidator that I am trying to use to make sure that someone has items in the listbox. The way that the HtmlSelect is populated is via a combination of client-side javascript and another aspx page (launched by the javascript). Anyway, everything seems to work just fine in terms of populating the HtmlSelect. However, when I postback the form, the RequiredFieldValidator always thinks that there is nothing in the HtmlSelect and fails validation (I am only using server-side validation, by the way). I have the ControlToValidate and all those things hooked up properly. Is there some trick to setting the RequiredFieldValidator for an HtmlSelect control? Some property that I am not setting?? I suspect that there is some small setting that I am missing, but I have spent way too much time on this to keep struggling. Any help is appreciated, Thanks BK |
|
|
|
|
#2 |
|
Posts: n/a
|
I wouldn't expect server-side validation to work on client-side added items.
Take a look at: http://openmymind.net/FAQ.aspx?documentId=1 but the quick answer is that when you add items in javascript, they aren't added to the viewstate which means they won't be recreated on postback...explains why your htmlselect is empty... Karl -- MY ASP.Net tutorials http://www.openmymind.net/ - New and Improved (yes, the popup is annoying) http://www.openmymind.net/faq.aspx - unofficial newsgroup FAQ (more to come!) "BK" <> wrote in message news:... > I'm having a really strange problem with and HtmlSelect server control > (listbox) and a RequiredFieldValidator that I am trying to use to make > sure > that someone has items in the listbox. > > The way that the HtmlSelect is populated is via a combination of > client-side > javascript and another aspx page (launched by the javascript). > > Anyway, everything seems to work just fine in terms of populating the > HtmlSelect. However, when I postback the form, the RequiredFieldValidator > always thinks that there is nothing in the HtmlSelect and fails validation > (I am only using server-side validation, by the way). I have the > ControlToValidate and all those things hooked up properly. Is there some > trick to setting the RequiredFieldValidator for an HtmlSelect control? > Some > property that I am not setting?? I suspect that there is some small > setting > that I am missing, but I have spent way too much time on this to keep > struggling. > > Any help is appreciated, > Thanks > > Karl Seguin |
|
|
|
#3 |
|
Posts: n/a
|
As Karl explained don't expect HtmlSelect to validate
*** Sent via Developersdex http://www.developersdex.com *** Patrick Olurotimi Ige |
|
|
|
#4 |
|
Posts: n/a
|
OK, this sort of makes sense to me. But, all the documentation that I have
read says that the RequiredFieldValidator works with an HtmlSelect server control. I guess what you are saying is that the items need to be added server-side for this to work? Also, if this is the case, then is there a way to add them to the viewstate in the described scenario or will I have to do some kind of convoluted CustomValidation where I check the Request collection? Based upon the FAQ below, I am assuming that converting to web controls wouldn't solve the problem either - this seems to be a client vs server side issue with regard to how the validation works. Brian "Karl Seguin" <karl REMOVE @ REMOVE openmymind REMOVEMETOO . ANDME net> wrote in message news:uP$6M$... > I wouldn't expect server-side validation to work on client-side added items. > > Take a look at: http://openmymind.net/FAQ.aspx?documentId=1 > > but the quick answer is that when you add items in javascript, they aren't > added to the viewstate which means they won't be recreated on > postback...explains why your htmlselect is empty... > > Karl > > > -- > MY ASP.Net tutorials > http://www.openmymind.net/ - New and Improved (yes, the popup is annoying) > http://www.openmymind.net/faq.aspx - unofficial newsgroup FAQ (more to > come!) > > > "BK" <> wrote in message > news:... > > I'm having a really strange problem with and HtmlSelect server control > > (listbox) and a RequiredFieldValidator that I am trying to use to make > > sure > > that someone has items in the listbox. > > > > The way that the HtmlSelect is populated is via a combination of > > client-side > > javascript and another aspx page (launched by the javascript). > > > > Anyway, everything seems to work just fine in terms of populating the > > HtmlSelect. However, when I postback the form, the RequiredFieldValidator > > always thinks that there is nothing in the HtmlSelect and fails validation > > (I am only using server-side validation, by the way). I have the > > ControlToValidate and all those things hooked up properly. Is there some > > trick to setting the RequiredFieldValidator for an HtmlSelect control? > > Some > > property that I am not setting?? I suspect that there is some small > > setting > > that I am missing, but I have spent way too much time on this to keep > > struggling. > > > > Any help is appreciated, > > Thanks > > > > > > BK |
|
|
|
#5 |
|
Posts: n/a
|
Well, it doesn't sound like it has anything to do with HtmlSelect, per se,
validating. It seems like it has to do with the values not being in Viewstate. If that is the case, then validation would not work with ANY items that are added to a form via client-side code. "Patrick Olurotimi Ige" <> wrote in message news:%... > As Karl explained don't expect HtmlSelect to validate > > *** Sent via Developersdex http://www.developersdex.com *** BK |
|
|
|
#6 |
|
Posts: n/a
|
You are pretty much right about everything. Though I would expect the
client-side validation to still work (not necessarily ideal since it only works in IE...) -items need to be added server-side -going to dropdownlist (server control) wouldn't change anything -you'll need to write your own validator and use request.form Cheers, Karl -- MY ASP.Net tutorials http://www.openmymind.net/ - New and Improved (yes, the popup is annoying) http://www.openmymind.net/faq.aspx - unofficial newsgroup FAQ (more to come!) "BK" <> wrote in message news:O3Fu5l%... > OK, this sort of makes sense to me. But, all the documentation that I have > read says that the RequiredFieldValidator works with an HtmlSelect server > control. I guess what you are saying is that the items need to be added > server-side for this to work? > > Also, if this is the case, then is there a way to add them to the > viewstate > in the described scenario or will I have to do some kind of convoluted > CustomValidation where I check the Request collection? Based upon the FAQ > below, I am assuming that converting to web controls wouldn't solve the > problem either - this seems to be a client vs server side issue with > regard > to how the validation works. > > Brian > > "Karl Seguin" <karl REMOVE @ REMOVE openmymind REMOVEMETOO . ANDME net> > wrote in message news:uP$6M$... >> I wouldn't expect server-side validation to work on client-side added > items. >> >> Take a look at: http://openmymind.net/FAQ.aspx?documentId=1 >> >> but the quick answer is that when you add items in javascript, they >> aren't >> added to the viewstate which means they won't be recreated on >> postback...explains why your htmlselect is empty... >> >> Karl >> >> >> -- >> MY ASP.Net tutorials >> http://www.openmymind.net/ - New and Improved (yes, the popup is >> annoying) >> http://www.openmymind.net/faq.aspx - unofficial newsgroup FAQ (more to >> come!) >> >> >> "BK" <> wrote in message >> news:... >> > I'm having a really strange problem with and HtmlSelect server control >> > (listbox) and a RequiredFieldValidator that I am trying to use to make >> > sure >> > that someone has items in the listbox. >> > >> > The way that the HtmlSelect is populated is via a combination of >> > client-side >> > javascript and another aspx page (launched by the javascript). >> > >> > Anyway, everything seems to work just fine in terms of populating the >> > HtmlSelect. However, when I postback the form, the > RequiredFieldValidator >> > always thinks that there is nothing in the HtmlSelect and fails > validation >> > (I am only using server-side validation, by the way). I have the >> > ControlToValidate and all those things hooked up properly. Is there >> > some >> > trick to setting the RequiredFieldValidator for an HtmlSelect control? >> > Some >> > property that I am not setting?? I suspect that there is some small >> > setting >> > that I am missing, but I have spent way too much time on this to keep >> > struggling. >> > >> > Any help is appreciated, >> > Thanks >> > >> > >> >> > > Karl Seguin |
|
|
|
#7 |
|
Posts: n/a
|
> OK, this sort of makes sense to me. But, all the documentation that I
> have read says that the RequiredFieldValidator works with an > HtmlSelect server control. I guess what you are saying is that the > items need to be added server-side for this to work? Yes, you're correct. If you look at the javascript emitted when you do have server side validation controls you'll see there's an array that's initalized at the bottom somewhere with the IDs of all the client side validation elements. This is what the client side framework drives off of. -Brock DevelopMentor http://staff.develop.com/ballen Brock Allen |
|
|
|
#8 |
|
Posts: n/a
|
I'm still having trouble with this, here is what I have done (I'm not using
client-side validation, by the way - customer requirement): 1) As I mentioned before, everything works fine client-side in terms of items being added to the HtmlSelect control. I get a nice list of items in my form, as expected. In addition, I have a hidden input field that holds a string representation of the values, so that I can persist between postbacks. For the sake of argument, lets call my HtmlSelect (which is runat=server) "lstValues" and my hidden input (which is also runat=server) "hdnValues". 2) Now, from what I understand, I should be able to truly populate the HtmlSelect control (as .NET sees it) on the server-side, so that when validation rolls around in the page event cycle, it will see that items have been added. This is where confusion sets in. 3) It seems that Page_Init is too early to set any values because "hdnValues" is always an empty string. So, that doesn't work. 4) I have tried adding IPostbackDataHandler to my page and implementing LoadPostbackData, but this doesn't seem to work. The values are set, but the validation still fails. 5) I have tried adding multiple other events that supposedly occur before validation and populating lstValues there, but all to no avail. Validation still fails. 6) I have googled and read everything that I can find, but nothing seem to work. This cannot be this difficult. I feel like I have all that I need on the client-side, I just need to know what to do and where to do it in the code-behind in order to catch the page event before validation and populate lstValues with the items that I have. Also, from what I understand (and I have observed the problem, so I know its true) CustomValidators don't work with HtmlSelect - the event doesn't fire, so that is not an option either. Any help is appreciated, I have been working on this all day.... TIA BK "Karl Seguin" <karl REMOVE @ REMOVE openmymind REMOVEMETOO . ANDME net> wrote in message news:OtuCBM$... > You are pretty much right about everything. Though I would expect the > client-side validation to still work (not necessarily ideal since it only > works in IE...) > > -items need to be added server-side > -going to dropdownlist (server control) wouldn't change anything > -you'll need to write your own validator and use request.form > > Cheers, > Karl > > -- > MY ASP.Net tutorials > http://www.openmymind.net/ - New and Improved (yes, the popup is > annoying) > http://www.openmymind.net/faq.aspx - unofficial newsgroup FAQ (more to > come!) > "BK" <> wrote in message > news:O3Fu5l%... > > OK, this sort of makes sense to me. But, all the documentation that I have > > read says that the RequiredFieldValidator works with an HtmlSelect server > > control. I guess what you are saying is that the items need to be added > > server-side for this to work? > > > > Also, if this is the case, then is there a way to add them to the > > viewstate > > in the described scenario or will I have to do some kind of convoluted > > CustomValidation where I check the Request collection? Based upon the FAQ > > below, I am assuming that converting to web controls wouldn't solve the > > problem either - this seems to be a client vs server side issue with > > regard > > to how the validation works. > > > > Brian > > > > "Karl Seguin" <karl REMOVE @ REMOVE openmymind REMOVEMETOO . ANDME net> > > wrote in message news:uP$6M$... > >> I wouldn't expect server-side validation to work on client-side added > > items. > >> > >> Take a look at: http://openmymind.net/FAQ.aspx?documentId=1 > >> > >> but the quick answer is that when you add items in javascript, they > >> aren't > >> added to the viewstate which means they won't be recreated on > >> postback...explains why your htmlselect is empty... > >> > >> Karl > >> > >> > >> -- > >> MY ASP.Net tutorials > >> http://www.openmymind.net/ - New and Improved (yes, the popup is > >> annoying) > >> http://www.openmymind.net/faq.aspx - unofficial newsgroup FAQ (more to > >> come!) > >> > >> > >> "BK" <> wrote in message > >> news:... > >> > I'm having a really strange problem with and HtmlSelect server control > >> > (listbox) and a RequiredFieldValidator that I am trying to use to make > >> > sure > >> > that someone has items in the listbox. > >> > > >> > The way that the HtmlSelect is populated is via a combination of > >> > client-side > >> > javascript and another aspx page (launched by the javascript). > >> > > >> > Anyway, everything seems to work just fine in terms of populating the > >> > HtmlSelect. However, when I postback the form, the > > RequiredFieldValidator > >> > always thinks that there is nothing in the HtmlSelect and fails > > validation > >> > (I am only using server-side validation, by the way). I have the > >> > ControlToValidate and all those things hooked up properly. Is there > >> > some > >> > trick to setting the RequiredFieldValidator for an HtmlSelect control? > >> > Some > >> > property that I am not setting?? I suspect that there is some small > >> > setting > >> > that I am missing, but I have spent way too much time on this to keep > >> > struggling. > >> > > >> > Any help is appreciated, > >> > Thanks > >> > > >> > > >> > >> > > > > > > BK |
|
|
|
#9 |
|
Posts: n/a
|
Thanks. I'm still having problems with this - I posted the details in a
previous message. Everything on the client side of the house works fine. I just cannot seem to figure out what to do on the server side to convince ..NET that there is something in the HtmlSelect. I have tried MANY different ways and all of them fail validation. "Brock Allen" <> wrote in message news: ... > > OK, this sort of makes sense to me. But, all the documentation that I > > have read says that the RequiredFieldValidator works with an > > HtmlSelect server control. I guess what you are saying is that the > > items need to be added server-side for this to work? > > Yes, you're correct. If you look at the javascript emitted when you do have > server side validation controls you'll see there's an array that's initalized > at the bottom somewhere with the IDs of all the client side validation elements. > This is what the client side framework drives off of. > > -Brock > DevelopMentor > http://staff.develop.com/ballen > > > BK |
|
|
|
#10 |
|
Posts: n/a
|
The information will be available in the Page_Load event. It's loaded in
the LoadPostbackData event of the individual contorl - not the pages. Why not just write your own validation event....By the time you get to a bottom's click event, the data is there, write a function "IsCustomValide()" which checks to see if hdnValues has a value? Karl -- MY ASP.Net tutorials http://www.openmymind.net/ - New and Improved (yes, the popup is annoying) http://www.openmymind.net/faq.aspx - unofficial newsgroup FAQ (more to come!) "BK" <> wrote in message news:... > I'm still having trouble with this, here is what I have done (I'm not > using > client-side validation, by the way - customer requirement): > > 1) As I mentioned before, everything works fine client-side in terms of > items being added to the HtmlSelect control. I get a nice list of items in > my form, as expected. In addition, I have a hidden input field that holds > a > string representation of the values, so that I can persist between > postbacks. For the sake of argument, lets call my HtmlSelect (which is > runat=server) "lstValues" and my hidden input (which is also runat=server) > "hdnValues". > > 2) Now, from what I understand, I should be able to truly populate the > HtmlSelect control (as .NET sees it) on the server-side, so that when > validation rolls around in the page event cycle, it will see that items > have > been added. This is where confusion sets in. > > 3) It seems that Page_Init is too early to set any values because > "hdnValues" is always an empty string. So, that doesn't work. > > 4) I have tried adding IPostbackDataHandler to my page and implementing > LoadPostbackData, but this doesn't seem to work. The values are set, but > the > validation still fails. > > 5) I have tried adding multiple other events that supposedly occur before > validation and populating lstValues there, but all to no avail. Validation > still fails. > > 6) I have googled and read everything that I can find, but nothing seem to > work. > > This cannot be this difficult. I feel like I have all that I need on the > client-side, I just need to know what to do and where to do it in the > code-behind in order to catch the page event before validation and > populate > lstValues with the items that I have. Also, from what I understand (and I > have observed the problem, so I know its true) CustomValidators don't work > with HtmlSelect - the event doesn't fire, so that is not an option either. > > Any help is appreciated, I have been working on this all day.... > > TIA > BK > > "Karl Seguin" <karl REMOVE @ REMOVE openmymind REMOVEMETOO . ANDME net> > wrote in message news:OtuCBM$... >> You are pretty much right about everything. Though I would expect the >> client-side validation to still work (not necessarily ideal since it only >> works in IE...) >> >> -items need to be added server-side >> -going to dropdownlist (server control) wouldn't change anything >> -you'll need to write your own validator and use request.form >> >> Cheers, >> Karl >> >> -- >> MY ASP.Net tutorials >> http://www.openmymind.net/ - New and Improved (yes, the popup is >> annoying) >> http://www.openmymind.net/faq.aspx - unofficial newsgroup FAQ (more to >> come!) >> "BK" <> wrote in message >> news:O3Fu5l%... >> > OK, this sort of makes sense to me. But, all the documentation that I > have >> > read says that the RequiredFieldValidator works with an HtmlSelect > server >> > control. I guess what you are saying is that the items need to be added >> > server-side for this to work? >> > >> > Also, if this is the case, then is there a way to add them to the >> > viewstate >> > in the described scenario or will I have to do some kind of convoluted >> > CustomValidation where I check the Request collection? Based upon the > FAQ >> > below, I am assuming that converting to web controls wouldn't solve the >> > problem either - this seems to be a client vs server side issue with >> > regard >> > to how the validation works. >> > >> > Brian >> > >> > "Karl Seguin" <karl REMOVE @ REMOVE openmymind REMOVEMETOO . ANDME net> >> > wrote in message news:uP$6M$... >> >> I wouldn't expect server-side validation to work on client-side added >> > items. >> >> >> >> Take a look at: http://openmymind.net/FAQ.aspx?documentId=1 >> >> >> >> but the quick answer is that when you add items in javascript, they >> >> aren't >> >> added to the viewstate which means they won't be recreated on >> >> postback...explains why your htmlselect is empty... >> >> >> >> Karl >> >> >> >> >> >> -- >> >> MY ASP.Net tutorials >> >> http://www.openmymind.net/ - New and Improved (yes, the popup is >> >> annoying) >> >> http://www.openmymind.net/faq.aspx - unofficial newsgroup FAQ (more to >> >> come!) >> >> >> >> >> >> "BK" <> wrote in message >> >> news:... >> >> > I'm having a really strange problem with and HtmlSelect server > control >> >> > (listbox) and a RequiredFieldValidator that I am trying to use to > make >> >> > sure >> >> > that someone has items in the listbox. >> >> > >> >> > The way that the HtmlSelect is populated is via a combination of >> >> > client-side >> >> > javascript and another aspx page (launched by the javascript). >> >> > >> >> > Anyway, everything seems to work just fine in terms of populating >> >> > the >> >> > HtmlSelect. However, when I postback the form, the >> > RequiredFieldValidator >> >> > always thinks that there is nothing in the HtmlSelect and fails >> > validation >> >> > (I am only using server-side validation, by the way). I have the >> >> > ControlToValidate and all those things hooked up properly. Is there >> >> > some >> >> > trick to setting the RequiredFieldValidator for an HtmlSelect > control? >> >> > Some >> >> > property that I am not setting?? I suspect that there is some small >> >> > setting >> >> > that I am missing, but I have spent way too much time on this to >> >> > keep >> >> > struggling. >> >> > >> >> > Any help is appreciated, >> >> > Thanks >> >> > >> >> > >> >> >> >> >> > >> > >> >> > > Karl Seguin |
|