I'm trying to update the 'question' field when I hit the 'update' button for a specific row. I am able to change the text when I hit the 'edit' button, but when I hit the 'update' button it reverts back to its original value. Nothing is changed in the database either.
Here is my markup:
<div class="divGrid" style="margin: 0 auto; width: 70%;">
<asp:GridView ID="QuestionsGridView" CssClass="gridView" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" Width="100%" CellPadding="4" ForeColor="#333333">
<Columns>
<asp:BoundField DataField="QUESTION_NUMBER" ReadOnly="true" HeaderText="Question Number" SortExpression="QUESTION_NUMBER" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center" />
<asp:TemplateField HeaderText="Question" SortExpression="QUESTION" HeaderStyle-HorizontalAlign="Center">
<EditItemTemplate>
<asp:TextBox ID="EditQuestionBox" runat="server" Height="50px" Text='<%# Bind("QUESTION") %>' TextMode="MultiLine" Width="99%" CssClass="multilineTBox" Columns="1" Rows="2"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("QUESTION") %>'></asp:Label>
</ItemTemplate>
<ControlStyle Width="99%" />
</asp:TemplateField>
<asp:BoundField DataField="CAT_NAME" ReadOnly="true" HeaderText="Category" SortExpression="CAT_NAME" HeaderStyle-HorizontalAlign="Center" />
<asp:BoundField DataField="QUES_ORDER" ReadOnly="true" HeaderText="Order in Category" SortExpression="QUES_ORDER" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center" />
<asp:CommandField CausesValidation="False" HeaderText="Edit" ShowEditButton="True" ControlStyle-Width="4em" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center" />
</Columns>
<EditRowStyle BackColor="#2461BF" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#a0a0a0" Font-Bold="True" ForeColor="White" BorderStyle="Solid" BorderColor="Black" BorderWidth="1px" HorizontalAlign="Center" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#ffffff" BorderStyle="Solid" BorderColor="Black" BorderWidth="1px" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F5F7FB" />
<SortedAscendingHeaderStyle BackColor="#6D95E1" />
<SortedDescendingCellStyle BackColor="#E9EBEF" />
<SortedDescendingHeaderStyle BackColor="#4870BE" />
</asp:GridView>
</div>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Corp_TaxConnectionString %>"
SelectCommand="SELECT tq.id, tq.question, tq.ques_order, tc.cat_name, tq.question_number FROM t01_tax_questions AS tq INNER JOIN t01_tax_categories AS tc ON tq.category = tc.cat_order ORDER BY tq.question_number"
UpdateCommand="UPDATE t01_tax_questions SET question = #question WHERE question_number = #question_number">
<UpdateParameters>
<asp:Parameter Name="question_number" Type="Int32" />
<asp:Parameter Name="question" Type="String" />
<asp:Parameter Name="id" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
And the table:
SQLServer Table
EDIT:
After looking, in my EditItemTemplate, I bind the question to the textbox. Is it possible that after I click the update button that the original question is databound to the textbox again before it tries to update? If this is the case, how would I get around that?
After looking further into it, I realized I had forgotten the apparently very important "DataKeyNames" attribute in my GridView tag. I feel really dumb. Here is the new working code.
<div class="divGrid" style="margin: 0 auto; width: 70%;">
<asp:GridView ID="QuestionsGridView" CssClass="gridView" runat="server" AutoGenerateColumns="False" Width="100%" DataKeyNames="ID, QUESTION_NUMBER" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="question_number" HeaderText="Question Number" SortExpression="question_number" ReadOnly="True" ItemStyle-HorizontalAlign="Center" />
<asp:BoundField DataField="question" HeaderText="Question" SortExpression="question" >
<ControlStyle Width="100%" Height="80%" />
</asp:BoundField>
<asp:BoundField DataField="cat_name" HeaderText="Category" SortExpression="cat_name" ItemStyle-HorizontalAlign="Center">
<ControlStyle Height="80%" />
</asp:BoundField>
<asp:BoundField DataField="ques_order" HeaderText="Question Order" SortExpression="ques_order" ReadOnly="True" ItemStyle-HorizontalAlign="Center" />
<asp:CommandField HeaderText="Edit" ShowEditButton="True" CausesValidation="False" HeaderStyle-Width="4%" ItemStyle-HorizontalAlign="Center"/>
<asp:CommandField HeaderText="Delete" ShowDeleteButton="True" CausesValidation="False" HeaderStyle-Width ="4%" ItemStyle-HorizontalAlign="Center" />
</Columns>
<EditRowStyle BackColor="Yellow" Width="100%" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#a0a0a0" Font-Bold="True" ForeColor="White" BorderStyle="Solid" BorderColor="Black" BorderWidth="1px" HorizontalAlign="Center" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#ffffff" BorderStyle="Solid" BorderColor="Black" BorderWidth="1px" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F5F7FB" />
<SortedAscendingHeaderStyle BackColor="#6D95E1" />
<SortedDescendingCellStyle BackColor="#E9EBEF" />
<SortedDescendingHeaderStyle BackColor="#4870BE" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Corp_TaxConnectionString %>" SelectCommand="SELECT
tq.id, tq.question_number, tq.question, tc.cat_name, tq.ques_order
FROM
t01_tax_questions AS tq
INNER JOIN
t01_tax_categories AS tc
ON
tq.category = tc.cat_order
ORDER BY tq.question_number"
DeleteCommand="DELETE
FROM
t01_tax_questions
WHERE
question_number = #question_number"
UpdateCommand="UPDATE
t01_tax_questions
SET
question = #question
WHERE
id = #id">
<DeleteParameters>
<asp:Parameter Name="#question_number" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="#question"/>
<asp:Parameter Name="#id" />
</UpdateParameters>
</asp:SqlDataSource>
It is all explained in this MSDN Documentation
Thank you to all who looked at this and tried.
Related
Looking to convert dozens of pages from aspx AccessDataSource to vb.net code behind. I'm using OleDB and ADO on other pages. wanted to know if there is any canned code to bind a simple select statement to the GridView1
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="AccessDataSource1" BackColor="White" BorderColor="#999999"
BorderStyle="Solid" BorderWidth="1px" CellPadding="3" ForeColor="Black"
GridLines="Vertical" AllowSorting="True">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="RowLevelCheckBox" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="UsersDataTbl.LastName" HeaderText="Last Name" SortExpression="LastName" />
<asp:BoundField DataField="UsersDataTbl.FirstName" HeaderText="First Name" SortExpression="FirstName" />
<asp:BoundField DataField="UsersDataTbl.Affiliation" HeaderText="Affiliation" SortExpression="Affiliation" />
<asp:BoundField DataField="UsersDataTbl.UID" HeaderText="UID" SortExpression="UID" />
</Columns>
<FooterStyle BackColor="#CCCCCC" />
<SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="#6699CC" />
</asp:GridView>
<asp:AccessDataSource ID="AccessDataSource1" runat="server"
DataFile="<%$ ConnectionStrings:AccessSubSiteString %>"
SelectCommand="SELECT [UsersDataTbl.LastName], [UsersDataTbl.FirstName], [UsersDataTbl.Affiliation], [UsersDataTbl.UID], [ALSProviders.ALS]
FROM [UsersDataTbl] LEFT JOIN [ALSProviders] ON (UsersDataTbl.UID = ALSProviders.UID) WHERE [UsersDataTbl.Career] = True
AND [UsersDataTbl.Active] = True AND ([UsersDataTbl.UID] NOT IN (SELECT UID FROM [ALSProviders]))
ORDER BY [UsersDataTbl.LastName]" >
<SelectParameters>
</SelectParameters>
</asp:AccessDataSource>
I am getting this error while running my aspx file when I click o Button2 after selecting start and end date and value from dropdown list.
The website was working normally but now it is throwing this exception.
My Aspx code is as follows
<center><p style="color: #000000; font-weight: bold;">
START DATE AND TIME <asp:TextBox ID="TextBox3" runat="server" Width="181px" BorderColor="Black" BorderStyle="Solid"></asp:TextBox> <img src="calender.png" /></p></center>
<center> <p style="color: #000000; font-weight: bold;">
END DATE AND TIME <asp:TextBox ID="TextBox2" runat="server" Width="188px" BorderColor="Black" BorderStyle="Solid"></asp:TextBox> <img src="calender.png" />
</p>
</center>
<br />
<center style="height: 40px"> <asp:Button ID="Button2" runat="server" Text="SUBMIT AND CALCULATE" onclick="btnSave_Click1" BackColor="#FF9966" CssClass="btn btn-large" Font-Bold="True"/>
<br />
<td>
<asp:GridView ID="GridView4" runat="server" AutoGenerateColumns="False" CellPadding="3" DataSourceID="SqlDataSource5" Height="146px" Width="53px" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellSpacing="2">
<Columns>
<asp:BoundField DataField="stdev_POLQA_score" HeaderText="stdev_POLQA_score" ReadOnly="True" SortExpression="stdev_POLQA_score" >
<ItemStyle Font-Bold="True" />
</asp:BoundField>
</Columns>
<FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
<HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
<PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
<RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#FFF1D4" />
<SortedAscendingHeaderStyle BackColor="#B95C30" />
<SortedDescendingCellStyle BackColor="#F1E5CE" />
<SortedDescendingHeaderStyle BackColor="#93451F" />
</asp:GridView></td></tr></table>
<br />
<asp:Button ID="Button4" runat="server" BackColor="#FF9966" Text="EXPORT POLQA TO EXCEL" CssClass="btn btn-large" Font-Bold="True" />
<br />
<br />
<table><tr> <td>
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="4" DataSourceID="SqlDataSource3" Height="146px" Width="53px" ForeColor="Black" GridLines="Horizontal">
<Columns>
<asp:BoundField DataField="mean_RTD" HeaderText="mean_RTD" ReadOnly="True" SortExpression="mean_RTD" >
<ItemStyle Font-Bold="True" />
</asp:BoundField>
</Columns>
<FooterStyle BackColor="#CCCC99" ForeColor="Black" />
<HeaderStyle BackColor="#333333" Font-Bold="True" ForeColor="White" />
<PagerStyle ForeColor="Black" HorizontalAlign="Right" BackColor="White" />
<SelectedRowStyle BackColor="#CC3333" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#F7F7F7" />
<SortedAscendingHeaderStyle BackColor="#4B4B4B" />
<SortedDescendingCellStyle BackColor="#E5E5E5" />
<SortedDescendingHeaderStyle BackColor="#242121" />
</asp:GridView></td>
<br /><td>
<asp:GridView ID="GridView3" runat="server" AutoGenerateColumns="False" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="4" DataSourceID="SqlDataSource4" Height="146px" Width="53px" ForeColor="Black" GridLines="Horizontal">
<Columns>
<asp:BoundField DataField="STDEV_RTD" HeaderText="stdev_RTD" ReadOnly="True" SortExpression="STDEV_RTD" >
<ItemStyle Font-Bold="True" />
</asp:BoundField>
</Columns>
<FooterStyle BackColor="#CCCC99" ForeColor="Black" />
<HeaderStyle BackColor="#333333" Font-Bold="True" ForeColor="White" />
<PagerStyle ForeColor="Black" HorizontalAlign="Right" BackColor="White" />
<SelectedRowStyle BackColor="#CC3333" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#F7F7F7" />
<SortedAscendingHeaderStyle BackColor="#4B4B4B" />
<SortedDescendingCellStyle BackColor="#E5E5E5" />
<SortedDescendingHeaderStyle BackColor="#242121" />
</asp:GridView></td>
<br />
</tr> </table>
</center>
<br />
<center> <asp:Button ID="Button3" runat="server" Text="EXPORT RTD TO EXCEL" onclick="Button3_Click" BackColor="#FF9966" CssClass="btn btn-large" Font-Bold="True" Width="257px"/>
</center>
<br />
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:VQTConnectionString %>" ProviderName="<%$ ConnectionStrings:VQTConnectionString.ProviderName %>" SelectCommand="SELECT ROUND(AVG(POLQA_Score),3) AS mean_POLQA_score FROM VQTPOLQA WHERE VQT_Timestamp BETWEEN ? AND ? AND VQuad_PhoneID =?">
<SelectParameters>
<asp:ControlParameter ControlID="TextBox3" DefaultValue="" Name="?" PropertyName="Text" />
<asp:ControlParameter ControlID="TextBox2" DefaultValue="" Name="?" PropertyName="Text" />
<asp:ControlParameter ControlID="DropDownList1" Name="?" PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
<br />
<asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:VQTConnectionString %>" ProviderName="<%$ ConnectionStrings:VQTConnectionString.ProviderName %>" SelectCommand="SELECT ROUND(AVG(RTD),3) AS mean_RTD FROM VQuadData WHERE VQuad_Timestamp BETWEEN ? AND ? AND RTD>0 AND VQuad_PhoneID=?">
<SelectParameters>
<asp:ControlParameter ControlID="TextBox3" DefaultValue="" Name="?" PropertyName="Text" />
<asp:ControlParameter ControlID="TextBox2" DefaultValue="" Name="?" PropertyName="Text" />
<asp:ControlParameter ControlID="DropDownList1" Name="?" PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
<br />
<asp:SqlDataSource ID="SqlDataSource6" runat="server" ConnectionString="<%$ ConnectionStrings:VQTConnectionString %>" ProviderName="<%$ ConnectionStrings:VQTConnectionString.ProviderName %>" SelectCommand="SELECT * FROM VQTPOLQA WHERE VQT_Timestamp BETWEEN ? AND ? AND VQuadPhone_ID=?">
<SelectParameters>
<asp:ControlParameter ControlID="TextBox3" Name="?" PropertyName="Text" />
<asp:ControlParameter ControlID="TextBox2" Name="?" PropertyName="Text" />
<asp:ControlParameter ControlID="DropDownList1" Name="?" PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
<br />
<asp:SqlDataSource ID="SqlDataSource4" runat="server" ConnectionString="<%$ ConnectionStrings:VQTConnectionString %>" ProviderName="<%$ ConnectionStrings:VQTConnectionString.ProviderName %>" SelectCommand="SELECT ROUND(Stdev(RTD),3) AS STDEV_RTD FROM VQuadData WHERE VQuad_Timestamp BETWEEN ? AND? AND RTD>0 AND VQuad_PhoneID=?">
<SelectParameters>
<asp:ControlParameter ControlID="TextBox3" DefaultValue="" Name="?" PropertyName="Text" />
<asp:ControlParameter ControlID="TextBox2" DefaultValue="" Name="?" PropertyName="Text" />
<asp:ControlParameter ControlID="DropDownList1" Name="?" PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource7" runat="server" ConnectionString="<%$ ConnectionStrings:VQTConnectionString %>" ProviderName="<%$ ConnectionStrings:VQTConnectionString.ProviderName %>" SelectCommand="SELECT * FROM VQuadData WHERE VQuad_Timestamp BETWEEN ? AND ? AND VQuad_PhoneID=?">
<SelectParameters>
<asp:ControlParameter ControlID="TextBox3" Name="?" PropertyName="Text" />
<asp:ControlParameter ControlID="TextBox2" Name="?" PropertyName="Text" />
<asp:ControlParameter ControlID="DropDownList1" Name="?" PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
<br />
<br />
<asp:SqlDataSource ID="SqlDataSource5" runat="server" ConnectionString="<%$ ConnectionStrings:VQTConnectionString %>" ProviderName="<%$ ConnectionStrings:VQTConnectionString.ProviderName %>" SelectCommand="SELECT ROUND(Stdev(POLQA_score),3) AS stdev_POLQA_score FROM VQTPOLQA WHERE VQT_Timestamp BETWEEN ? AND ? AND VQuad_PhoneID=?">
<SelectParameters>
<asp:ControlParameter ControlID="TextBox3" DefaultValue="" Name="?" PropertyName="Text" />
<asp:ControlParameter ControlID="TextBox2" DefaultValue="" Name="?" PropertyName="Text" />
<asp:ControlParameter ControlID="DropDownList1" Name="?" PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
<br />
<br />
<div style="display:none" ><center> <asp:GridView ID="GridView5" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="SqlDataSource6" BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" GridLines="Vertical">
<AlternatingRowStyle BackColor="#DCDCDC" />
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True" SortExpression="ID" />
<asp:BoundField DataField="VQT_Timestamp" HeaderText="VQT_Timestamp" SortExpression="VQT_Timestamp" />
<asp:BoundField DataField="VQuad_Timestamp" HeaderText="VQuad_Timestamp" SortExpression="VQuad_Timestamp" />
<asp:BoundField DataField="GPS_Position" HeaderText="GPS_Position" SortExpression="GPS_Position" />
<asp:BoundField DataField="GPS_Lat" HeaderText="GPS_Lat" SortExpression="GPS_Lat" />
<asp:BoundField DataField="GPS_Long" HeaderText="GPS_Long" SortExpression="GPS_Long" />
<asp:BoundField DataField="VQuad_CallID" HeaderText="VQuad_CallID" SortExpression="VQuad_CallID" />
<asp:BoundField DataField="VQuad_Location" HeaderText="VQuad_Location" SortExpression="VQuad_Location" />
<asp:BoundField DataField="VQuad_PhoneID" HeaderText="VQuad_PhoneID" SortExpression="VQuad_PhoneID" />
<asp:BoundField DataField="Degraded" HeaderText="Degraded" SortExpression="Degraded" />
<asp:BoundField DataField="Deg_File_Name" HeaderText="Deg_File_Name" SortExpression="Deg_File_Name" />
<asp:BoundField DataField="POLQA_Score" HeaderText="POLQA_Score" SortExpression="POLQA_Score" />
<asp:BoundField DataField="Pass_Or_Fail" HeaderText="Pass_Or_Fail" SortExpression="Pass_Or_Fail" />
<asp:BoundField DataField="Jitter_Min" HeaderText="Jitter_Min" SortExpression="Jitter_Min" />
<asp:BoundField DataField="Jitter_Max" HeaderText="Jitter_Max" SortExpression="Jitter_Max" />
<asp:BoundField DataField="Jitter_Ave" HeaderText="Jitter_Ave" SortExpression="Jitter_Ave" />
<asp:BoundField DataField="EModel_Polqa" HeaderText="EModel_Polqa" SortExpression="EModel_Polqa" />
<asp:BoundField DataField="Speech_Level_Diff" HeaderText="Speech_Level_Diff" SortExpression="Speech_Level_Diff" />
<asp:BoundField DataField="SNR_Diff" HeaderText="SNR_Diff" SortExpression="SNR_Diff" />
<asp:BoundField DataField="ASR_Ref" HeaderText="ASR_Ref" SortExpression="ASR_Ref" />
<asp:BoundField DataField="ASR_Deg" HeaderText="ASR_Deg" SortExpression="ASR_Deg" />
<asp:BoundField DataField="Number_of_Utterance" HeaderText="Number_of_Utterance" SortExpression="Number_of_Utterance" />
<asp:BoundField DataField="Call_Timestamp" HeaderText="Call_Timestamp" SortExpression="Call_Timestamp" />
<asp:BoundField DataField="CallType_Orig" HeaderText="CallType_Orig" SortExpression="CallType_Orig" />
<asp:BoundField DataField="CallType_Term" HeaderText="CallType_Term" SortExpression="CallType_Term" />
</Columns>
<FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
<HeaderStyle BackColor="#000084" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<RowStyle BackColor="#EEEEEE" ForeColor="Black" />
<SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#F1F1F1" />
<SortedAscendingHeaderStyle BackColor="#0000A9" />
<SortedDescendingCellStyle BackColor="#CAC9C9" />
<SortedDescendingHeaderStyle BackColor="#000065" />
</asp:GridView></center></div>
<br />
<div style="display:none"><center><asp:GridView ID="GridView6" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="SqlDataSource7">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True" SortExpression="ID" />
<asp:BoundField DataField="VQuad_Timestamp" HeaderText="VQuad_Timestamp" SortExpression="VQuad_Timestamp" />
<asp:BoundField DataField="GPS_Position" HeaderText="GPS_Position" SortExpression="GPS_Position" />
<asp:BoundField DataField="GPS_Lat" HeaderText="GPS_Lat" SortExpression="GPS_Lat" />
<asp:BoundField DataField="GPS_Long" HeaderText="GPS_Long" SortExpression="GPS_Long" />
<asp:BoundField DataField="AFT" HeaderText="AFT" SortExpression="AFT" />
<asp:BoundField DataField="RTD" HeaderText="RTD" SortExpression="RTD" />
<asp:BoundField DataField="RTD_Error" HeaderText="RTD_Error" SortExpression="RTD_Error" />
<asp:BoundField DataField="PDD" HeaderText="PDD" SortExpression="PDD" />
<asp:BoundField DataField="PDD_Error" HeaderText="PDD_Error" SortExpression="PDD_Error" />
<asp:BoundField DataField="Phone_ID" HeaderText="Phone_ID" SortExpression="Phone_ID" />
<asp:BoundField DataField="Call_Control_Event" HeaderText="Call_Control_Event" SortExpression="Call_Control_Event" />
<asp:BoundField DataField="VQuad_CallID" HeaderText="VQuad_CallID" SortExpression="VQuad_CallID" />
<asp:BoundField DataField="VQuad_Location" HeaderText="VQuad_Location" SortExpression="VQuad_Location" />
<asp:BoundField DataField="VQuad_PhoneID" HeaderText="VQuad_PhoneID" SortExpression="VQuad_PhoneID" />
<asp:BoundField DataField="Call_Timestamp" HeaderText="Call_Timestamp" SortExpression="Call_Timestamp" />
<asp:BoundField DataField="RTD_Rating" HeaderText="RTD_Rating" SortExpression="RTD_Rating" />
<asp:BoundField DataField="OWD" HeaderText="OWD" SortExpression="OWD" />
<asp:BoundField DataField="SWR" HeaderText="SWR" SortExpression="SWR" />
<asp:BoundField DataField="CC_Condition" HeaderText="CC_Condition" SortExpression="CC_Condition" />
<asp:BoundField DataField="CallType_Orig" HeaderText="CallType_Orig" SortExpression="CallType_Orig" />
<asp:BoundField DataField="CallType_Term" HeaderText="CallType_Term" SortExpression="CallType_Term" />
</Columns>
</asp:GridView></center></div>
<br />
<br />
<asp:AccessDataSource runat="server" DataFile="C:\Users\saishnib\Desktop\VQT DB LATEST ORIGINAL (copy)\New folder\VQT.mdb" SelectCommand="SELECT AVG(POLQA_Score) AS MEANPOLQA FROM VQTPOLQA WHERE (VQT_Timestamp BETWEEN ? AND ?)">
<SelectParameters>
<asp:ControlParameter ControlID="TextBox3" DefaultValue="" Name="?" PropertyName="Text" />
<asp:ControlParameter ControlID="TextBox2" Name="?" PropertyName="Text" />
</SelectParameters>
</asp:AccessDataSource>
<br />
<br />
<br />
<br />
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:VQTConnectionString %>" ProviderName="<%$ ConnectionStrings:VQTConnectionString.ProviderName %>" SelectCommand="SELECT DISTINCT [VQuad_PhoneID] FROM [VQTPOLQA]"></asp:SqlDataSource>
<br />
My aspx.vb code is as follows
Protected Sub btnSave_Click1(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
Dim connectionString As [String] = "Provider=Microsoft.ACE.OLEDB.12.0;Data" + " Source=C:\Users\saishnib\Desktop\VQT DB LATEST ORIGINAL (copy)\New folder\VQT.mdb"
Dim ds As New DataSet()
Dim conn As New OleDbConnection(connectionString)
conn.Open()
Dim cmd As New OleDbCommand("SELECT ROUND(AVG(POLQA_Score),3) AS MEANPOLQA FROM VQTPOLQA WHERE VQT_Timestamp BETWEEN ? AND ? AND VQuad_PhoneID =?", conn)
Dim cmd2 As New OleDbCommand("SELECT ROUND(AVG(RTD),3) AS mean_RTD FROM VQuadData WHERE VQuad_Timestamp BETWEEN ? AND ? AND RTD>0 AND VQuad_PhoneID=?", conn)
Dim cmd3 As New OleDbCommand("SELECT Stdev(RTD) AS STDEV_RTD FROM VQuadData WHERE VQuad_Timestamp BETWEEN ? AND ? AND RTD>0 VQuad_PhoneID =?", conn)
Dim cmd4 As New OleDbCommand("SELECT Stdev(POLQA_Score) AS STDEV_POLQA FROM VQTPOLQA WHERE VQT_Timestamp BETWEEN ? AND ? VQuad_PhoneID =?", conn)
Dim param As OleDbParameter
param = cmd.CreateParameter
param.OleDbType = OleDbType.Date
param.Value = DateTime.Parse(TextBox3.Text)
param.ParameterName = "#StartDate"
cmd.Parameters.Add(param)
Dim param1 As OleDbParameter
param1 = cmd.CreateParameter
param1.OleDbType = OleDbType.Date
param1.Value = DateTime.Parse(TextBox2.Text)
param1.ParameterName = "#EndDate"
cmd.Parameters.Add(param1)
GridView1.DataBind()
Dim param2 As OleDbParameter
param2 = cmd2.CreateParameter
param2.OleDbType = OleDbType.Date
param2.Value = DateTime.Parse(TextBox3.Text)
param2.ParameterName = "#StartDate"
cmd2.Parameters.Add(param2)
Dim param3 As OleDbParameter
param3 = cmd2.CreateParameter
param3.OleDbType = OleDbType.Date
param3.Value = DateTime.Parse(TextBox2.Text)
param3.ParameterName = "#EndDate"
cmd2.Parameters.Add(param3)
GridView2.DataBind()
Dim param4 As OleDbParameter
param4 = cmd3.CreateParameter
param4.OleDbType = OleDbType.Date
param4.Value = DateTime.Parse(TextBox3.Text)
param4.ParameterName = "#StartDate"
cmd3.Parameters.Add(param4)
Dim param5 As OleDbParameter
param5 = cmd3.CreateParameter
param5.OleDbType = OleDbType.Date
param5.Value = DateTime.Parse(TextBox2.Text)
param5.ParameterName = "#EndDate"
cmd3.Parameters.Add(param5)
GridView3.DataBind()
Dim param6 As OleDbParameter
param6 = cmd4.CreateParameter
param6.OleDbType = OleDbType.Date
param6.Value = DateTime.Parse(TextBox3.Text)
param6.ParameterName = "#StartDate"
cmd4.Parameters.Add(param6)
Dim param7 As OleDbParameter
param7 = cmd4.CreateParameter
param7.OleDbType = OleDbType.Date
param7.Value = DateTime.Parse(TextBox2.Text)
param7.ParameterName = "#EndDate"
cmd4.Parameters.Add(param7)
GridView4.DataBind()
conn.Close()
End Sub
Protected Sub DropDownList1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DropDownList1.SelectedIndexChanged
End Sub
Protected Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Response.Clear()
Response.AddHeader("content-disposition", "attachment;filename=FileName.xls")
Response.Charset = ""
Response.ContentType = "application/vnd.xls"
Dim stringWrite As New System.IO.StringWriter()
Dim htmlWrite As System.Web.UI.HtmlTextWriter = New HtmlTextWriter(stringWrite)
GridView6.RenderControl(htmlWrite)
Response.Write(stringWrite.ToString())
Response.[End]()
End Sub
Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)
Return
End Sub
Protected Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Response.Clear()
Response.AddHeader("content-disposition", "attachment;filename=FileName.xls")
Response.Charset = ""
Response.ContentType = "application/vnd.xls"
Dim stringWrite As New System.IO.StringWriter()
Dim htmlWrite As System.Web.UI.HtmlTextWriter = New HtmlTextWriter(stringWrite)
GridView5.RenderControl(htmlWrite)
Response.Write(stringWrite.ToString())
Response.[End]()
End Sub
End Class
After editing the SQL DATA source that is attached to the particular GridView we can modify the ? content to be Control TextBox and DropDown by using the ideal SQL query this solves the issue.
I know this is simply a SQL question but I can't remember in ASP.NET how to make this work, keep getting UID column not there error.
want to get the value of UsersDataTbl.UID and UPDATE EnrollmentsTbl.UID
<asp:GridView ID="GridView3" runat="server" AllowSorting="True" AutoGenerateColumns="True"
BackColor="White" BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" CellPadding="3"
DataKeyNames="AutoNum" DataSourceID="AccessDataSource3" ForeColor="Black" GridLines="Vertical"
AutoGenerateEditButton="true" AutoGenerateDeleteButton="false">
<FooterStyle BackColor="#CCCCCC" />
<SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="#6699CC" />
</asp:GridView>
<asp:AccessDataSource ID="AccessDataSource3" runat="server"
DataFile="<%$ ConnectionStrings:AccessSubSiteString %>"
DeleteCommand="DELETE FROM [EnrollmentsTbl] WHERE [AutoNum] = ?"
SelectCommand="SELECT EnrollmentsTbl.AutoNum, EnrollmentsTbl.UID As E_UID, UsersDataTbl.UID As U_UID,
UsersDataTbl.LastName, UsersDataTbl.FirstName FROM EnrollmentsTbl INNER JOIN UsersDataTbl
ON EnrollmentsTbl.UserName = UsersDataTbl.UserName"
UpdateCommand="UPDATE [EnrollmentsTbl] SET E_UID = ? WHERE [AutoNum] = ?">
<DeleteParameters>
<asp:Parameter Name="AutoNum" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="E_UID" Type="Int32" />
<asp:Parameter Name="AutoNum" Type="Int32" />
</UpdateParameters>
</asp:AccessDataSource>
the error I get is: Exception Details: System.Data.OleDb.OleDbException: Cannot update 'E_UID'; field not updateable.
This was working correctly, but now its inserting duplicate rows everytime I perform an insert from the page. Both rows are good with all data inserted correctly, but its putting the record in the database twice each time. How do I stop this?
VB.net code:
Protected Sub gvOnCallSchedule_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.CommandEventArgs) Handles gvOnCallSchedule.RowCommand
If e.CommandName = "Insert" AndAlso Page.IsValid Then
Try
dsOncallGroup.Insert()
Catch ex As Exception
MsgBox(Err.Description, MsgBoxStyle.Critical, "SQL Error")
End Try
End If
If e.CommandName = "Delete" Then
Try
dsOncallGroup.Delete()
Catch ex As Exception
MsgBox(Err.Description, MsgBoxStyle.Critical, "SQL Error")
End Try
'Response.Redirect("Default.aspx")
End If
End Sub
Protected Sub dsOnCallGroup_Inserting(ByVal sender As Object, ByVal e As SqlDataSourceCommandEventArgs) Handles dsOncallGroup.Inserting
Dim strddlGroupName As New DropDownList
Dim txtStartOnCall As New TextBox
Dim txtEndOnCall As New TextBox
Dim txtRank As New TextBox
Dim strddlEmpName As New DropDownList
Dim strddlOCPreferredContact As New DropDownList
Dim txtEmpWorkPhone As New TextBox
Dim txtEmpHomePhone As New TextBox
Dim txtEmpHomeCellPhone As New TextBox
Dim txtEmpAltPhone As New TextBox
strddlGroupName = CType(gvOnCallSchedule.FooterRow.FindControl("ftrddlOCGroup"), DropDownList)
txtStartOnCall = CType(gvOnCallSchedule.FooterRow.FindControl("txtStartOnCallFtr"), TextBox)
txtEndOnCall = CType(gvOnCallSchedule.FooterRow.FindControl("txtEndOnCallFtr"), TextBox)
txtRank = CType(gvOnCallSchedule.FooterRow.FindControl("txtCallOrderFtr"), TextBox)
strddlEmpName = CType(gvOnCallSchedule.FooterRow.FindControl("ddlAnalystFtr"), DropDownList)
strddlOCPreferredContact = CType(gvOnCallSchedule.FooterRow.FindControl("ftrddlOCPreferredContact"), DropDownList)
txtEmpWorkPhone = CType(gvOnCallSchedule.FooterRow.FindControl("txtWorkPhoneFtr"), TextBox)
txtEmpHomePhone = CType(gvOnCallSchedule.FooterRow.FindControl("txtHomePhoneFtr"), TextBox)
txtEmpHomeCellPhone = CType(gvOnCallSchedule.FooterRow.FindControl("txtHomeCellPhoneFtr"), TextBox)
txtEmpAltPhone = CType(gvOnCallSchedule.FooterRow.FindControl("txtAltPhoneFtr"), TextBox)
e.Command.Parameters("#fldOnCallGroup").Value = strddlGroupName.Text
e.Command.Parameters("#fldStartOnCall").Value = txtStartOnCall.Text
e.Command.Parameters("#fldEndOnCall").Value = txtEndOnCall.Text
e.Command.Parameters("#fldRank").Value = txtRank.Text
e.Command.Parameters("#fldEmpName").Value = strddlEmpName.Text
e.Command.Parameters("#fldOCPreferredContact").Value = strddlOCPreferredContact.Text
e.Command.Parameters("#fldEmpWorkPhone").Value = txtEmpWorkPhone.Text
e.Command.Parameters("#fldEmpHomePhone").Value = txtEmpHomePhone.Text
e.Command.Parameters("#fldEmpHomeCellPhone").Value = txtEmpHomeCellPhone.Text
e.Command.Parameters("#fldEmpAltPhone").Value = txtEmpAltPhone.Text
End Sub
ASP code
Datasource:
<asp:SqlDataSource ID="dsOncallGroup" runat="server"
ConnectionString="<%$ ConnectionStrings:DiscussSQLConnectionString %>"
SelectCommand="SELECT * FROM tblOnCallSchedule WHERE (tblOnCallSchedule.fldOnCallGroup = #fldOnCallGroup)
AND (tblOnCallSchedule.fldEndOnCall > GETDATE())
ORDER BY tblOnCallSchedule.fldOnCallGroup, tblOnCallSchedule.fldEndOnCall, tblOnCallSchedule.fldRank"
OldValuesParameterFormatString="original_{0}"
DeleteCommand="DELETE FROM tblOnCallSchedule WHERE fldOCID = #original_fldOCID"
InsertCommand="INSERT INTO [tblOnCallSchedule] ([fldOnCallGroup], [fldStartOnCall], [fldEndOnCall], [fldRank], [fldEmpName], [fldOCPreferredContact], [fldEmpWorkPhone],
[fldEmpHomePhone],[fldEmpHomeCellPhone],[fldEmpAltPhone])
VALUES (#fldOnCallGroup, #fldStartOnCall, #fldEndOnCall, #fldRank, #fldEmpName, #fldOCPreferredContact, #fldEmpWorkPhone, #fldEmpHomePhone,
#fldEmpHomeCellPhone, #fldEmpAltPhone)"
UpdateCommand="UPDATE [tblOnCallSchedule] SET [fldOnCallGroup] = #fldOnCallGroup, [fldStartOnCall] = #fldStartOnCall,
[fldEndOnCall] = #fldEndOnCall, [fldRank] = #fldRank, [fldEmpName] = #fldEmpName, [fldOCPreferredContact] = #fldOCPreferredContact,
[fldEmpWorkPhone] = #fldEmpWorkPhone,[fldEmpHomePhone] = #fldEmpHomePhone,[fldEmpHomeCellPhone] = #fldEmpHomeCellPhone,
[fldEmpAltPhone] = #fldEmpAltPhone
WHERE [fldOCID] = #original_fldOCID">
<SelectParameters>
<asp:ControlParameter ControlID="cboOncallGroup" Name="fldOnCallGroup"
PropertyName="SelectedValue" Type="String" />
</SelectParameters>
<DeleteParameters>
<asp:Parameter Name= "original_fldOCID" Type="Int16" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="fldOnCallGroup" Type="String" ConvertEmptyStringToNull="false" />
<asp:Parameter Name="fldStartOnCall" DbType ="Date" />
<asp:Parameter Name="fldEndOnCall" DbType ="Date" />
<asp:Parameter Name= "fldRank" Type="Int16" />
<asp:Parameter Name= "fldEmpName" Type="String" />
<asp:Parameter Name= "fldOCPreferredContact" Type="String" />
<asp:Parameter Name= "fldEmpWorkPhone" Type="String" />
<asp:Parameter Name= "fldEmpHomePhone" Type="String" />
<asp:Parameter Name= "fldEmpHomeCellPhone" Type="String" />
<asp:Parameter Name= "fldEmpAltPhone" Type="String" />
<asp:Parameter Name="original_fldOnCallGroup" Type="String" ConvertEmptyStringToNull="false" />
<asp:Parameter Name="original_fldStartOnCall" DbType="Date" />
<asp:Parameter Name="original_fldEndOnCall" DbType="Date" />
<asp:Parameter Name="original_fldRank" Type="Int16" />
<asp:Parameter Name="original_fldEmpName" Type="String" />
<asp:Parameter Name="original_fldOCPreferredContact" Type="String" />
<asp:Parameter Name="original_fldEmpWorkPhone" Type="String" />
<asp:Parameter Name="original_fldEmpHomePhone" Type="String" />
<asp:Parameter Name="original_fldEmpHomeCellPhone" Type="String" />
<asp:Parameter Name="original_fldEmpAltPhone" Type="String" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="fldOnCallGroup" Type="String" />
<asp:Parameter DbType="Date" Name="fldStartOnCall" />
<asp:Parameter DbType="Date" Name="fldEndOnCall" />
<asp:Parameter Name="fldRank" Type="Int16" />
<asp:Parameter Name="fldEmpName" Type="String" />
<asp:Parameter Name="fldOCPreferredContact" Type="String" />
<asp:Parameter Name="fldEmpWorkPhone" Type="String" />
<asp:Parameter Name="fldEmpHomePhone" Type="String" />
<asp:Parameter Name="fldEmpHomeCellPhone" Type="String" />
<asp:Parameter Name="fldEmpAltPhone" Type="String" />
<asp:Parameter Name="original_fldOnCallGroup" Type="String" ConvertEmptyStringToNull="false" />
<asp:Parameter Name="original_fldStartOnCall" DbType="Date" />
<asp:Parameter Name="original_fldEndOnCall" DbType="Date" />
<asp:Parameter Name="original_fldRank" Type="Int16" />
<asp:Parameter Name="original_fldEmpName" Type="String" />
<asp:Parameter Name="original_fldOCPreferredContact" Type="String" />
<asp:Parameter Name="original_fldEmpWorkPhone" Type="String" />
<asp:Parameter Name="original_fldEmpHomePhone" Type="String" />
<asp:Parameter Name="original_fldEmpHomeCellPhone" Type="String" />
<asp:Parameter Name="original_fldEmpAltPhone" Type="String" />
</InsertParameters>
</asp:SqlDataSource>
Gridview Code:
<asp:Gridview ID="gvOnCallSchedule" runat="server" AllowSorting="True" AllowPaging="True" showfooter="true"
OnRowUpdating="GvOnCall_Update" onRowCommand="gvOnCallSchedule_RowCommand" DataKeyNames="fldOCID"
BackColor="Aqua" DataSourceID="dsOncallGroup" Font-Bold="True"
Font-Italic="False" Font-Overline="False" Font-Strikeout="False"
Font-Underline="False" ForeColor="#333333" HorizontalAlign="Justify"
CellPadding="4" GridLines="None" PageSize="20" AutoGenerateColumns ="false"
OnSelectedIndexChanged="cboOnCallGroup_SelectedIndexChanged">
<Columns>
<asp:TemplateField ShowHeader="false">
<FooterTemplate>
<asp:ImageButton ID="AddButton" runat="server" CommandName="Insert" ImageURL="~/images/New.png"
Text="Add" ToolTip="Add New On Call Record" />
</FooterTemplate>
<EditItemTemplate>
<asp:ImageButton ID="UpdateButton" runat="server" CausesValidation="False" CommandName="Update"
ImageUrl="~/images/Save.png" Text="Update" ToolTip="Update" />
<asp:ImageButton ID="CancelButton" runat="server" CausesValidation="false" CommandName="Cancel"
ImageURL="~/images/Cancel.png" Text="Cancel" ToolTip="Cancel" />
</EditItemTemplate>
<ItemTemplate>
<asp:ImageButton ID="EditButton" runat="server" CausesValidation="False" CommandName="Edit"
ImageUrl="~/images/Edit.gif" Text="Edit" ToolTip="Edit" />
<asp:ImageButton ID="DeleteButton" runat="server" CausesValidation="False" CommandName="Delete"
ImageUrl="~/images/Delete.png" Text="Delete" ToolTip="Delete" />
</ItemTemplate>
<ItemStyle Wrap="false" />
</asp:TemplateField>
<asp:Boundfield headertext="fldOCID" datafield="fldOCID" sortexpression="fldOCID" visible="false" InsertVisible="False" />
<asp:TemplateField headertext="On Call Group">
<ItemTemplate>
<asp:DropDownList ID="ddlOCGroup" width="200px" runat="server" datavaluefield="fldOnCallGroup" Enabled="false"
DataSourceID= "dsListbox" SelectedValue="<%# Bind('fldOnCallGroup') %>">
</asp:DropDownList>
</ItemTemplate>
<FooterTemplate>
<asp:DropDownList ID="ftrddlOCGroup" width="200px" runat="server" datavaluefield="fldOnCallGroup"
DataSourceID= "dsListbox" SelectedValue="<%# Bind('fldOnCallGroup') %>">
</asp:DropDownList>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField headertext="Start Date/Time">
<ItemTemplate>
<asp:Textbox ID="txtStartOnCall" runat="server" Text='<%# Bind("fldStartOnCall") %>'>
</asp:Textbox>
<asp:Image ID="calpopup" runat="server" ImageUrl="~/images/calendar2.png" />
<asp:CalendarExtender ID="StartOnCallCal" runat="server" TargetControlID="txtStartOnCall"
PopupButtonID="calpopup" PopupPosition="Right" format="MM/dd/yyyy">
</asp:CalendarExtender>
</ItemTemplate>
<FooterTemplate>
<asp:Textbox ID="txtStartOnCallFtr" runat="server" Text='<%# Bind("fldStartOncall") %>'>
</asp:Textbox>
<asp:Image ID="calpopupFtr" runat="server" ImageUrl="~/images/calendar2.png" />
<asp:CalendarExtender ID="StartOnCallCalFtr" runat="server" TargetControlID="txtStartOnCallFtr"
PopupButtonID="calpopupFtr" PopupPosition="Right" format="MM/dd/yyyy">
</asp:CalendarExtender>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField headertext="End Date/Time">
<ItemTemplate>
<asp:Textbox ID="txtEndOnCall" runat="server" Text='<%# Bind("fldEndOnCall") %>'>
</asp:Textbox>
<asp:Image ID="calpopup2" runat="server" ImageUrl="~/images/calendar2.png" />
<asp:CalendarExtender ID="EndOnCallCal" runat="server" TargetControlID="txtEndOnCall"
PopupButtonID="calpopup2" PopupPosition="Right" format="MM/dd/yyyy">
</asp:CalendarExtender>
</ItemTemplate>
<FooterTemplate>
<asp:Textbox ID="txtEndOnCallFtr" runat="server" Text='<%# Bind("fldEndOnCall") %>'>
</asp:Textbox>
<asp:Image ID="calpopup2Ftr" runat="server" ImageUrl="~/images/calendar2.png" />
<asp:CalendarExtender ID="EndOnCallCalFtr" runat="server" TargetControlID="txtEndOnCallFtr"
PopupButtonID="calpopup2Ftr" PopupPosition="Right" format="MM/dd/yyyy">
</asp:CalendarExtender>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField headertext="Call Order">
<ItemTemplate>
<asp:Textbox ID="lblCallOrder" runat="server" width="100" Text='<%# Bind("fldRank") %>'>
</asp:Textbox>
</ItemTemplate>
<FooterTemplate>
<asp:Textbox ID="txtCallOrderFtr" runat="server" width="100" Text='<%# Bind("fldOnCallGroup") %>'>
</asp:Textbox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="OnCall Analyst">
<ItemTemplate>
<asp:DropDownList ID="ddlAnalyst" runat="server" datavaluefield="fldEmpName"
datasourceID="dsEmp" SelectedValue='<%# Bind("fldEmpName") %>'>
</asp:DropDownList>
</ItemTemplate>
<FooterTemplate>
<asp:DropDownList ID="ddlAnalystFtr" runat="server" datavaluefield="fldEmpName"
DataSourceID= "dsEmp" SelectedValue='<%# Bind("fldEmpName") %>'>
</asp:DropDownList>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Preferred Contact">
<ItemTemplate>
<asp:DropDownList ID="ddlOCPreferredContact" Width="150px" runat="server" datavaluefield="fldOCPreferredContact"
datasourceID="dsPref" SelectedValue='<%# Bind("fldOCPreferredContact") %>'>
</asp:DropDownList>
</ItemTemplate>
<FooterTemplate>
<asp:DropDownList ID="ftrddlOCPreferredContact" width="150px" runat="server" datavaluefield="fldOCPreferredContact"
DataSourceID= "dsPref" SelectedValue='<%# Bind("fldOCPreferredContact") %>'>
</asp:DropDownList>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField headertext="Work Phone">
<ItemTemplate>
<asp:Textbox ID="lblWorkPhone" runat="server" width="90" Text='<%# Bind("fldEmpWorkPhone") %>'>
</asp:Textbox>
</ItemTemplate>
<FooterTemplate>
<asp:Textbox ID="txtWorkPhoneFtr" runat="server" width="90" Text='<%# Bind("fldEmpWorkPhone") %>'>
</asp:Textbox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField headertext="Home Phone">
<ItemTemplate>
<asp:Textbox ID="lblHomePhone" runat="server" width="90" Text='<%# Bind("fldEmpHomePhone") %>'>
</asp:Textbox>
</ItemTemplate>
<FooterTemplate>
<asp:Textbox ID="txtHomePhoneFtr" runat="server" width="90" Text='<%# Bind("fldEmpHomePhone") %>'>
</asp:Textbox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField headertext="Personal Cell">
<ItemTemplate>
<asp:Textbox ID="lblHomeCellPhone" runat="server" width="95" Text='<%# Bind("fldEmpHomeCellPhone") %>'>
</asp:Textbox>
</ItemTemplate>
<FooterTemplate>
<asp:Textbox ID="txtHomeCellPhoneFtr" runat="server" width="95" Text='<%# Bind("fldEmpHomeCellPhone") %>'>
</asp:Textbox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField headertext="Alternate Phone">
<ItemTemplate>
<asp:Textbox ID="lblAltPhone" runat="server" width="105" Text='<%# Bind("fldEmpAltPhone") %>'>
</asp:Textbox>
</ItemTemplate>
<FooterTemplate>
<asp:Textbox ID="txtAltPhoneFtr" runat="server" width="105" Text='<%# Bind("fldEmpAltPhone") %>'>
</asp:Textbox>
</FooterTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#7C6F57" />
<AlternatingRowStyle BackColor="White" />
</asp:Gridview>
Put a break point on the call to dsOncallGroup.Insert() and see if it is called twice, if so then it is your code doing it and you can figure out where the second call is happening by examining the Call Stack window (Debug -> Windows -> Call Stack).
If there are not two calls in the code, then you need to investigate if a trigger has been added to your database that is somehow causing extra data to be inserted.
I have a DetailsView that looks just about perfect. The only thing is, there is one field that actually gets its information from another table. It is an ID field that is linked to another table in the database and I was hoping that there was some way to get that one field in the DetailsView to pull the information from the other table.
Is there a way to maybe add a + (plus sign) next to the PicklistID and then have it show the results of the other query? (SELECT TEXT FROM PICKLIST WHERE PicklistID = #PicklistID???)
UPDATE 1/11/12: The PICKLISTID in the table PICKLIST is not unique or a primary key so I cannot reference it from the SURVEY table. Is there a way to give these 2 columns a relationship so that I can just change my SELECT statement in my DetailsView to include the PICKLISTID?
UPDATE 1/23/12: I'm still stuck on this. I am not getting how to make this work at all. Help would be appreciated. I am still new....
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:Label ID="Label2" runat="server" Text="<h3>Manage Questions</h3>"></asp:Label>
<table style="width: 100%">
<tr>
<td align="right">
<asp:Label ID="Label1" runat="server" Text="Select Survey:"></asp:Label>
</td>
<td>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
DataSourceID="dsSurvey" DataTextField="SurveyName" DataValueField="SurveyID">
</asp:DropDownList>
</td>
</tr>
<tr>
<td colspan="2">
<asp:DetailsView ID="dvSurveyQuestions" runat="server" AllowPaging="True"
AutoGenerateRows="False" CellPadding="4" DataKeyNames="QuestionID"
DataSourceID="dsSurveyQuestions" ForeColor="#333333" GridLines="None"
Height="50px" Width="100%">
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<CommandRowStyle BackColor="#E2DED6" Font-Bold="True" />
<EditRowStyle BackColor="#999999" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<Fields>
<asp:BoundField DataField="QuestionID" HeaderText="QuestionID"
InsertVisible="False" ReadOnly="True" SortExpression="QuestionID" />
<asp:TemplateField HeaderText="Question" SortExpression="Question">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine"
Text='<%# Bind("Question") %>'></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine"
Text='<%# Bind("Question") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="lblQuestion" runat="server" Text='<%# Bind("Question") %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Answer Type" SortExpression="AnswerType">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList2" runat="server"
SelectedValue='<%# Bind("AnswerType") %>'>
<asp:ListItem Value="S">Single Choice (radio button)</asp:ListItem>
<asp:ListItem Value="M">Multiple Choices (checkboxes)</asp:ListItem>
<asp:ListItem Value="T">Text (textbox)</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
<InsertItemTemplate>
<asp:DropDownList ID="DropDownList3" runat="server"
SelectedValue='<%# Bind("AnswerType") %>'>
<asp:ListItem Value="S">Single Choice (radio button)</asp:ListItem>
<asp:ListItem Value="M">Multiple Choices (checkboxes)</asp:ListItem>
<asp:ListItem Value="T">Text (textbox)</asp:ListItem>
</asp:DropDownList>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="lblAnswerType" runat="server"
Text='<%# Bind("AnswerType") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Question Type" SortExpression="QType">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList4" runat="server"
SelectedValue='<%# Bind("QType") %>'>
<asp:ListItem Value="Picklist">Picklist</asp:ListItem>
<asp:ListItem Value="Text">Text</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
<InsertItemTemplate>
<asp:DropDownList ID="DropDownList5" runat="server"
SelectedValue='<%# Bind("QType") %>'>
<asp:ListItem Value="Picklist">Picklist</asp:ListItem>
<asp:ListItem Value="Text">Text</asp:ListItem>
</asp:DropDownList>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="lblQType" runat="server" Text='<%# Bind("QType") %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Answer" SortExpression="TEXT">
<EditItemTemplate>
</EditItemTemplate>
<InsertItemTemplate>
</InsertItemTemplate>
<ItemTemplate>
<asp:HiddenField ID="HiddenField1" runat="server" Value='<%# Bind("PicklistID") %>' />
<asp:SqlDataSource ID="dsPicklist" runat="server"
ConnectionString="<%$ ConnectionStrings:SurveyConnectionString %>"
SelectCommand="SELECT DISTINCT p.TEXT, p.PICKLISTID
FROM PICKLIST p JOIN C_Survey_Questions c
ON c.PicklistID = p.PICKLISTID
AND c.SurveyID = #SurveyID
ORDER BY p.TEXT">
<SelectParameters>
<asp:ControlParameter ControlID="HiddenField1" Name="PicklistID"
PropertyName="SelectedValue" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<asp:Label ID="lblTEXT" runat="server" Text=""></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="QuestionNum" HeaderText="Question Number"
SortExpression="QuestionNum" />
<asp:BoundField DataField="Subsequence" HeaderText="Subsequence"
SortExpression="Subsequence" />
<asp:CheckBoxField DataField="Active" HeaderText="Active"
SortExpression="Active" />
<asp:BoundField DataField="Script" HeaderText="Script"
SortExpression="Script" />
<asp:CheckBoxField DataField="Question_Locked" HeaderText="Question Locked"
SortExpression="Question_Locked" />
<asp:BoundField DataField="QHelp" HeaderText="Question Help"
SortExpression="QHelp" />
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True"
ShowInsertButton="True" />
</Fields>
<FieldHeaderStyle BackColor="#E9ECF1" Font-Bold="True" Width="10%" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
</asp:DetailsView>
</td>
</tr>
</table>
<asp:SqlDataSource ID="dsSurvey" runat="server"
ConnectionString="<%$ ConnectionStrings:SurveyConnectionString %>"
SelectCommand="SELECT [SurveyID], [SurveyName]
FROM [C_Survey]
ORDER BY [SurveyName]">
</asp:SqlDataSource>
<asp:SqlDataSource ID="dsSurveyQuestions" runat="server"
ConnectionString="<%$ ConnectionStrings:SurveyConnectionString %>"
DeleteCommand="DELETE FROM [C_Survey_Questions] WHERE [QuestionID] = #QuestionID"
InsertCommand="INSERT INTO [C_Survey_Questions] ([SurveyID], [Question], [QType],
[PickListID], [QuestionNum], [Subsequence], [Active], [Script],
[Question_Locked], [QHelp], [Createdate],
[Modifydate], [AnswerType])
VALUES (#SurveyID, #Question, #QType, #PickListID, #QuestionNum,
#Subsequence, #Active, #Script, #Question_Locked, #QHelp,
getdate(), getdate(), #AnswerType)"
SelectCommand="SELECT * FROM [C_Survey_Questions]
WHERE ([SurveyID] = #SurveyID)"
UpdateCommand="UPDATE [C_Survey_Questions] SET [SurveyID] = #SurveyID,
[Question] = #Question, [QType] = #QType,
[PickListID] = #PickListID, [QuestionNum] = #QuestionNum,
[Subsequence] = #Subsequence, [Active] = #Active,
[Script] = #Script, [Question_Locked] = #Question_Locked,
[QHelp] = #QHelp, [Modifydate] = getdate(),
[AnswerType] = #AnswerType
WHERE [QuestionID] = #QuestionID">
<DeleteParameters>
<asp:Parameter Name="QuestionID" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="SurveyID" Type="Int32" />
<asp:Parameter Name="Question" Type="String" />
<asp:Parameter Name="QType" Type="String" />
<asp:Parameter Name="PickListID" Type="String" />
<asp:Parameter Name="QuestionNum" Type="Int32" />
<asp:Parameter Name="Subsequence" Type="Int32" />
<asp:Parameter Name="Active" Type="Boolean" />
<asp:Parameter Name="Script" Type="String" />
<asp:Parameter Name="Question_Locked" Type="Boolean" />
<asp:Parameter Name="QHelp" Type="String" />
<asp:Parameter Name="Createdate" Type="DateTime" />
<asp:Parameter Name="Modifydate" Type="DateTime" />
<asp:Parameter Name="AnswerType" Type="String" />
</InsertParameters>
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="SurveyID"
PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="SurveyID" Type="Int32" />
<asp:Parameter Name="Question" Type="String" />
<asp:Parameter Name="QType" Type="String" />
<asp:Parameter Name="PickListID" Type="String" />
<asp:Parameter Name="QuestionNum" Type="Int32" />
<asp:Parameter Name="Subsequence" Type="Int32" />
<asp:Parameter Name="Active" Type="Boolean" />
<asp:Parameter Name="Script" Type="String" />
<asp:Parameter Name="Question_Locked" Type="Boolean" />
<asp:Parameter Name="QHelp" Type="String" />
<asp:Parameter Name="Modifydate" Type="DateTime" />
<asp:Parameter Name="AnswerType" Type="String" />
<asp:Parameter Name="QuestionID" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
</asp:Content>
Partial Class Admin_ManageQuestions
Inherits System.Web.UI.Page
Protected Sub dsPicklist_ItemSelecting(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
Dim myControl1 As Control = FindControl("lblTEXT")
If (Not myControl1 Is Nothing) Then
myControl1.DataBind()
Else
'Control not found
End If
End Sub
Protected Sub dvSurveyQuestions_ItemInserting(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.DetailsViewInsertEventArgs) Handles
dvSurveyQuestions.ItemInserting
'The DetailsView does not include SurveyID column...we need to set this column
during INSERT operations because each question must belong to some survey.
e.Values("SurveyID") = DropDownList1.SelectedValue
End Sub
Protected Sub dvSurveyQuestions_ItemUpdating(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.DetailsViewUpdateEventArgs) Handles
dvSurveyQuestions.ItemUpdating
'The DetailsView does not include SurveyID column...we need to set this column
during UPDATE operations because each question must belong to some survey.
e.NewValues("SurveyID") = DropDownList1.SelectedValue
End Sub
Protected Sub dvSurveyQuestions_DataBound(ByVal sender As Object, ByVal e As
System.EventArgs) Handles dvSurveyQuestions.DataBound
'The event handler checks the row count of the DetailsView control.
If it is zero then the mode of the DetailsView is changed to Insert using
ChangeMode() method.
If dvSurveyQuestions.Rows.Count = 0 Then
dvSurveyQuestions.ChangeMode(DetailsViewMode.Insert)
End If
End Sub
End Class
You can do that, but maybe not in the way you want to.
The simplest way would be to use the DataBinding event on the DetailsView itself. Then use code to run the query.
Another way would be to create your own control as a subclass of BoundField and override the OnDataBindField method
The most performant way would be to join the data at the source in a DataView or another construct. Ideally the joining of data should be done as close to the actual source of the data (e.g. in a SQL query or view) to avoid unnecessary trips across the network to the database. For a single row it wouldn't be a big issue, but that is generally what you should do.