I have a drop down box form field (with values level1,level2) in SharePoint list. How can I lock the drop down box selection in the edit form.aspx whenever the condition is level2?
4 Answers
Out of the box, there is no way to lock a drop-down.
The only solution I see is to attach a custom script to the page that will delete the level1 option as soon as level2 is selected. Then there's no way back.
Note that it only locks the edit form (your question). Users would still be able to use a datasheet view, Web services or other to force the value to level1.
You can do something similar to what you want, if you use an InfoPath form as new/edit page for your list.
Here is an example on how to make a custom InfoPath new/edit form for your list.
See here how to customize list forms with InfoPath
http://sharepoint.microsoft.com/Blogs/GetThePoint/Lists/Posts/Post.aspx?List=8d9e2a99%2Df288%2D47c2%2D916b%2D2f32864f7b82&ID=320
And here
http://cakriwut.wordpress.com/2010/03/21/sharepoint-2010-howto-start-customize-list-form-neweditview-using-infopath-designer-2010/
Havent looked into locking dropdowns in InfoPath, but this should get you going so you can experiment with that part of it.
Another option is to create a custom ASP.NET new/edit form
Here is an example on how to do this
-
Thanks Anders! for pointing me to the customizated list forms(aspx)...this is wat i was looking for some time ago– SandeshRCommented Jan 30, 2012 at 17:39
Is this a cascading thing that SPServices can help with? The SPCascadeDropdowns function helps you tie two columns together, making the available options in the second depend on the choice for the first.
If this isn't the case, then some custom script to disable to select is another possibility.
as suggested by Mark, i used custom script to disable the dropdown based on condition
var getselectTag = document.getElementsByTagName('select');
for(j=0;j<getselectTag.length;j++)
{
if(getselectTag[j].title =='Support Level')
{
if(getselectTag[j].value =='2nd Level')
{
getselectTag[j].disabled = true;
}
}
}}
the for loop takes time to execute .. any suggestion on how to replace this javascript by jquery?
-
Replacing JavaScript by jQuery won't remove the loop... Commented Jan 30, 2012 at 19:11
-
You can do a tighter selection with jQuery, but you probably can also do so with plain JavaScript. You're finding all of the selects and looing through them to find the right one (which ought to be fast). Commented Jan 30, 2012 at 20:25
-
Well to optimize that loop a bit, just break out of the loop after "getselectTag[j].disabled = true;" Commented Jan 30, 2012 at 20:38