[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 835
  • Last Modified:

How to edit a single column in gridview? Asp.net 2.0, vb, sql express

I want to be able to readout all columns in a table called qAdvent but allow insert/update of only one column. Is there a way to do this?

I would prefer that the column that performs the update contain a dropdown list with Yes and No as the choices. The underlying field is a text field that will have either yes or no.

Here's my gridview code. I don't know where to go from here.


<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
               AllowSorting="True" AutoGenerateColumns="False" CellPadding="4" 
               DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None" 
                DataKeyNames="qAdventID">
               <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
               <Columns>
                   <asp:CommandField ShowEditButton="True" />
                   <asp:BoundField DataField="quoteNum" HeaderText="quoteNum" 
                       SortExpression="quoteNum" InsertVisible="False" />
                   <asp:BoundField DataField="contract" HeaderText="contract" 
                       SortExpression="contract" />
                   <asp:BoundField DataField="location" HeaderText="location" 
                       SortExpression="location" />
                   <asp:BoundField DataField="serviceLevel" HeaderText="serviceLevel" 
                       SortExpression="serviceLevel" />
                   <asp:BoundField DataField="clientName" HeaderText="clientName" 
                       SortExpression="clientName" />
                   <asp:BoundField DataField="address1" HeaderText="address1" 
                       SortExpression="address1" />
                   <asp:BoundField DataField="city" HeaderText="city" 
                       SortExpression="city" />
                   <asp:BoundField DataField="itemName" HeaderText="itemName" 
                       SortExpression="itemName" />
                   <asp:BoundField DataField="serialNum" HeaderText="serialNum" 
                       SortExpression="serialNum" />
                   <asp:BoundField DataField="beginDate" HeaderText="beginDate" 
                       SortExpression="beginDate" />
                   <asp:BoundField DataField="endDate" HeaderText="endDate" 
                       SortExpression="endDate" />
                   <asp:BoundField DataField="annCost" HeaderText="annCost" 
                       SortExpression="annCost" />
                   <asp:BoundField DataField="proRateCost" HeaderText="proRateCost" 
                       SortExpression="proRateCost" />
                   <asp:BoundField DataField="flagForRemoval" HeaderText="flagForRemoval" 
                       SortExpression="flagForRemoval" />
               </Columns>
               <EditRowStyle BackColor="#999999" />
               <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
               <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
               <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
               <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
               <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
               <SortedAscendingCellStyle BackColor="#E9E7E2" />
               <SortedAscendingHeaderStyle BackColor="#506C8C" />
               <SortedDescendingCellStyle BackColor="#FFFDF8" />
               <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
           </asp:GridView>

Open in new window

0
MHenry
Asked:
MHenry
  • 6
  • 3
1 Solution
 
Carl TawnSystems and Integration DeveloperCommented:
making a single column editable is easy enough, you just need to add:

ReadOnly="true"

To all of the columns that should not be editable.

You will need to use a TemplateField for the column that should be a dropdown. This should get you started:

    http://msdn.microsoft.com/en-us/library/bb288032.aspx
0
 
MHenryAuthor Commented:
carl_tawn,

When I did it that way, it erased everything in the database by assigning everything as null except that one column.

0
 
MHenryAuthor Commented:
I would also like to do this with a submit button instead of as an edit field. That way I can send an email notification when it has been updated if at all possible.
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
MHenryAuthor Commented:
ah. convertEmptyStringToNull needs to be set to false.

anyway to do this with a button though? Really need to send a notification email.
0
 
MHenryAuthor Commented:
still stripping out everything even with the convertEmptyStringToNull set to false...
0
 
Carl TawnSystems and Integration DeveloperCommented:
What update command are you using for your SqlDataSource?
0
 
MHenryAuthor Commented:
I used the standard thing inserted by vs2010
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:adventConnectionString %>"
            
            SelectCommand="SELECT * FROM [qAdvent] ORDER BY [quoteNum] DESC, [contract] DESC" 
            DeleteCommand="DELETE FROM [qAdvent] WHERE [qAdventID] = @qAdventID" 
            InsertCommand="INSERT INTO [qAdvent] ([dbDate], [quoteNum], [contract], [location], [serviceLevel], [clientName], [address1], [city], [itemName], [serialNum], [beginDate], [endDate], [annCost], [proRateCost], [flagForRemoval]) VALUES (@dbDate, @quoteNum, @contract, @location, @serviceLevel, @clientName, @address1, @city, @itemName, @serialNum, @beginDate, @endDate, @annCost, @proRateCost, @flagForRemoval)" 
            UpdateCommand="UPDATE [qAdvent] SET [dbDate] = @dbDate, [quoteNum] = @quoteNum, [contract] = @contract, [location] = @location, [serviceLevel] = @serviceLevel, [clientName] = @clientName, [address1] = @address1, [city] = @city, [itemName] = @itemName, [serialNum] = @serialNum, [beginDate] = @beginDate, [endDate] = @endDate, [annCost] = @annCost, [proRateCost] = @proRateCost, [flagForRemoval] = @flagForRemoval WHERE [qAdventID] = @qAdventID">

Open in new window

0
 
Carl TawnSystems and Integration DeveloperCommented:
Ok, because you are deviating from the IDE generated code you will need to manually tweak the UPDATE statement and it's associated parameters to exlude the columns that you want to have as read only.

So, remove each column name (enclosed in []) and each associated parameter (things starting with @), and then remove the corresponding elements from the <UpdateParameters> element. You need to leave the [qAdventID] column in there though because that is the key used for performing the update.
0
 
MHenryAuthor Commented:
woo hoo!

thanks carl_tawn!
0

Featured Post

Windows Server 2016: All you need to know

Learn about Hyper-V features that increase functionality and usability of Microsoft Windows Server 2016. Also, throughout this eBook, you’ll find some basic PowerShell examples that will help you leverage the scripts in your environments!

  • 6
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now