![]() |
|
|
|
#1 |
|
Hi all,
I'm new to ASP.NET and am working through a few exercises in a book to get up to speed. First, some background: I'm running SQL Server 2000 and have one field as a bit data type (0=false or 1=true). On a form I have a check box that a user can check for whatever reason. This field saves properly to the DB. However, my problem is in editing the field. When I click a link to update a record, the checkbox is always unchecked. If I leave it unchecked it updates the field to show as false. I can't seem to get it to enable based on the data from the dataset. it looks like I've got it set to dynamic as well (I'm using Dreamweaver to develop). In the parameter tag I have this: <Parameter Name="@access" Value='<%# IIf((Request.Form("EditPages") <> Nothing), Request.Form("access"), "") %>' Type="Boolean" /> And for the actual checkbox I have: <asp:checkbox id="EditPages" runat="server" checked='<%# IIf((dsUpdate.FieldValue("EditPages", Container) = "1"), true, false) %>' /> Now, again - new to ASP.NET (.NET in general) and I can't follow this logic. An someone walk me through it? Also - why are If statements IIF (with 2 I's?) Thanks for your newbie patience! Dave Dave |
|
|
|
|
#2 |
|
Posts: n/a
|
To answer the last question: IIf is not an if statement, at least not
directly; it is an if ... else. The statement you have state: if(Request.Form("EditPages") 'Get from the database else 'do not The statement looks fine, but the methodology you are using is very ASP, not ASP.NET. The concept of determining where you are based on form tags is the improper part. If it were coded in Page_Load, you would likely code: If(Not Page.IsPostback) Then 'set up the page Else If Request.Form("EditPages") <> Nothing Then End If End If As each button produces its own event, the above methodology is quite error prone. I assume there is an edit version of a page and a non-edit? If not, your IIf is completely unnecessary. What I would do is code everything in code behind rather than use the drag and drop, declarative methodology. This will help you understand .NET better. If, later, you wish to go back to declarative, that is your prerogative. YOu will still understand the model better. The basics are like so (assuming SQL Server, change class names for other DBs): 'Get data Dim connString as String = "{your connection string here}" Dim sql as String = "{SQL Statement to get your data to edit}" Dim conn As New SqlConnection(connString) Dim cmd As New SqlCommand(sql, conn) Dim da As New SqlDataAdapter(cmd) Dim ds As New DataSet("NameHere") Try conn.Open() da.Fill(ds) Catch Ex As Exception 'Add excption handler Finally If (conn.State = ConnectionState.Open) Then conn.Close() End If conn.Dispose() End Try You can now bind from the one row returned (assume it is one row): CheckBox1.Checked = ds.Tables("NameHere").Rows(0)("CheckboxField") This methodology allows you to ignore the bind on a non-edit, by only adding the binding routine on the edit button click (or hyperlink, etc.) Hopefully this makes sense. If not, my suggestion is to move to C#. You will be less likely to bring ASP/VB COM baggage into .NET if you switch languages. You can always switch back to VB.NET later, after you have the paradigm shift down. --- Gregory A. Beamer MVP; MCP: +I, SE, SD, DBA *************************** Think Outside the Box! *************************** "Dave" wrote: > Hi all, > > I'm new to ASP.NET and am working through a few exercises in a book to get > up to speed. First, some background: > > I'm running SQL Server 2000 and have one field as a bit data type (0=false > or 1=true). On a form I have a check box that a user can check for whatever > reason. This field saves properly to the DB. > > However, my problem is in editing the field. When I click a link to update > a record, the checkbox is always unchecked. If I leave it unchecked it > updates the field to show as false. I can't seem to get it to enable based > on the data from the dataset. it looks like I've got it set to dynamic as > well (I'm using Dreamweaver to develop). > > In the parameter tag I have this: > > <Parameter Name="@access" Value='<%# IIf((Request.Form("EditPages") <> > Nothing), Request.Form("access"), "") %>' Type="Boolean" /> > > And for the actual checkbox I have: > > <asp:checkbox id="EditPages" runat="server" checked='<%# > IIf((dsUpdate.FieldValue("EditPages", Container) = "1"), true, false) %>' /> > > Now, again - new to ASP.NET (.NET in general) and I can't follow this logic. > An someone walk me through it? Also - why are If statements IIF (with 2 > I's?) > > Thanks for your newbie patience! > > Dave > > > > =?Utf-8?B?Q293Ym95IChHcmVnb3J5IEEuIEJlYW1lcikgLSBNVlA=?= |
|
|
|
#3 |
|
Posts: n/a
|
Hi Dave,
It is hard to see where your problem is given the amount of code you posted. Perhaps you could show some more? As for the second part, IIF is a handy function that returns one of two "answers" according to the result of the analysis. In your case, the code appears to be evaluating this expression: (dsUpdate.FieldValue("EditPages", Container) = "1") which (I assume) means evaluate whether the value of the field in EditPages is "1". If the value is "1", the boolean result is true. If not, the boolean result is false. At that point, IIF has something it can work with - a logical value. IIF looks at the logical value and if it is true, it returns the value after the comma. If the logical value is false, it returns the value after the second comma which in this case is also false. Here's the explanation in the docs: http://msdn.microsoft.com/library/de...l/vafctIIF.asp <asp:checkbox id="EditPages" runat="server" checked='<%# IIf((dsUpdate.FieldValue("EditPages", Container) = "1"), true, false) %>' /> Ken MVP [ASP.NET] Toronto "Dave" <> wrote in message news:... > Hi all, > > I'm new to ASP.NET and am working through a few exercises in a book to get > up to speed. First, some background: > > I'm running SQL Server 2000 and have one field as a bit data type (0=false > or 1=true). On a form I have a check box that a user can check for > whatever > reason. This field saves properly to the DB. > > However, my problem is in editing the field. When I click a link to > update > a record, the checkbox is always unchecked. If I leave it unchecked it > updates the field to show as false. I can't seem to get it to enable > based > on the data from the dataset. it looks like I've got it set to dynamic as > well (I'm using Dreamweaver to develop). > > In the parameter tag I have this: > > <Parameter Name="@access" Value='<%# IIf((Request.Form("EditPages") <> > Nothing), Request.Form("access"), "") %>' Type="Boolean" /> > > And for the actual checkbox I have: > > <asp:checkbox id="EditPages" runat="server" checked='<%# > IIf((dsUpdate.FieldValue("EditPages", Container) = "1"), true, false) %>' > /> > > Now, again - new to ASP.NET (.NET in general) and I can't follow this > logic. > An someone walk me through it? Also - why are If statements IIF (with 2 > I's?) > > Thanks for your newbie patience! > > Dave > > > Ken Cox [Microsoft MVP] |
|
|
|
#4 |
|
Posts: n/a
|
Hi Ken,
Thanks for the walk through! OK - So the IIF, for whatever reason isn't triggering properly. even though the value of the editpages field is 1 it doesn't check the box. Could it be because the datatype is a BIT and it is evaluating it againts a text string? "Ken Cox [Microsoft MVP]" <> wrote in message news:%... > Hi Dave, > > It is hard to see where your problem is given the amount of code you > posted. Perhaps you could show some more? > > As for the second part, IIF is a handy function that returns one of two > "answers" according to the result of the analysis. > > In your case, the code appears to be evaluating this expression: > > (dsUpdate.FieldValue("EditPages", Container) = "1") > > which (I assume) means evaluate whether the value of the field in > EditPages is "1". > > If the value is "1", the boolean result is true. If not, the boolean > result is false. > > At that point, IIF has something it can work with - a logical value. IIF > looks at the logical value and if it is true, it returns the value after > the comma. If the logical value is false, it returns the value after the > second comma which in this case is also false. > > Here's the explanation in the docs: > > http://msdn.microsoft.com/library/de...l/vafctIIF.asp > > <asp:checkbox id="EditPages" runat="server" checked='<%# > IIf((dsUpdate.FieldValue("EditPages", Container) = "1"), true, false) %>' > /> > > Ken > MVP [ASP.NET] > Toronto > > > "Dave" <> wrote in message > news:... >> Hi all, >> >> I'm new to ASP.NET and am working through a few exercises in a book to >> get >> up to speed. First, some background: >> >> I'm running SQL Server 2000 and have one field as a bit data type >> (0=false >> or 1=true). On a form I have a check box that a user can check for >> whatever >> reason. This field saves properly to the DB. >> >> However, my problem is in editing the field. When I click a link to >> update >> a record, the checkbox is always unchecked. If I leave it unchecked it >> updates the field to show as false. I can't seem to get it to enable >> based >> on the data from the dataset. it looks like I've got it set to dynamic >> as >> well (I'm using Dreamweaver to develop). >> >> In the parameter tag I have this: >> >> <Parameter Name="@access" Value='<%# IIf((Request.Form("EditPages") <> >> Nothing), Request.Form("access"), "") %>' Type="Boolean" /> >> >> And for the actual checkbox I have: >> >> <asp:checkbox id="EditPages" runat="server" checked='<%# >> IIf((dsUpdate.FieldValue("EditPages", Container) = "1"), true, false) %>' >> /> >> >> Now, again - new to ASP.NET (.NET in general) and I can't follow this >> logic. >> An someone walk me through it? Also - why are If statements IIF (with 2 >> I's?) >> >> Thanks for your newbie patience! >> >> Dave >> >> >> > Dave |
|
|
|
#5 |
|
Posts: n/a
|
> Could it be because the datatype is a BIT and it is evaluating it againts
> a text string? That's my guess. "Dave" <> wrote in message news:... > Hi Ken, > > Thanks for the walk through! > > OK - So the IIF, for whatever reason isn't triggering properly. even > though the value of the editpages field is 1 it doesn't check the box. > Could it be because the datatype is a BIT and it is evaluating it againts > a text string? Ken Cox [Microsoft MVP] |
|
|
|
#6 |
|
Posts: n/a
|
Yep - that was it.
changed it from: IIf((dsUpdate.FieldValue("EditPages", Container) = "1"), true, false) %>' /> To: IIf((dsUpdate.FieldValue("EditPages", Container) = true), true, false) %>' /> and worked like a charm! "Ken Cox [Microsoft MVP]" <> wrote in message news:u$... >> Could it be because the datatype is a BIT and it is evaluating it againts >> a text string? > > That's my guess. > > > "Dave" <> wrote in message > news:... >> Hi Ken, >> >> Thanks for the walk through! >> >> OK - So the IIF, for whatever reason isn't triggering properly. even >> though the value of the editpages field is 1 it doesn't check the box. >> Could it be because the datatype is a BIT and it is evaluating it againts >> a text string? > Dave |
|
![]() |
| Thread Tools | Search this Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| ASP.NET: Asign Users in Roles(Array.IndexOf(Of String) method) | msandlana | Software | 0 | 04-25-2008 06:37 AM |
| Checkbox values problem in gridview | thanigaimani.thirumalai | Software | 0 | 11-09-2007 05:12 AM |