2016-02-29 170 views
-1

我正在嘗試更新後面使用c#代碼的gridview。我通常使用SqlDataSource,但我需要捕獲當前用戶進行更改,但似乎不起作用。所以我想我會在後面的代碼中嘗試一下。從代碼後面更新gridview?

這裏是在GridView:

<asp:GridView 
ID="gv_rvw_sub" 
runat="server" 
AllowPaging="True" 
AllowSorting="True" 
DataSourceID="sdc_gv_rvw_sub" 
CellPadding="4" 
AutoGenerateColumns="False" 
EmptyDataText="There are no records to display." 
OnSelectedIndexChanged="gv_rvw_sub_SelectedIndexChanged" 
OnRowUpdating="gv_rvw_sub_RowUpdating"> 
<AlternatingRowStyle BackColor="White" /> 
<Columns> 
<asp:CommandField ShowEditButton="True" ShowSelectButton="True"></asp:CommandField> 
<asp:BoundField DataField="doc_rvw_sub_id_pk" HeaderText="Submission" ReadOnly="True" InsertVisible="False" SortExpression="doc_rvw_sub_id_pk"></asp:BoundField> 
<asp:BoundField DataField="doc_rvw_sub_by" HeaderText="Submitted By" SortExpression="doc_rvw_sub_by" ReadOnly="true"></asp:BoundField> 
<asp:BoundField DataField="doc_rvw_sub_recip_list" HeaderText="Recipient" SortExpression="doc_rvw_sub_recip_list" ReadOnly="true" /> 
<asp:BoundField DataField="doc_rvw_sub_dt" HeaderText="Date Submitted" SortExpression="doc_rvw_sub_dt" DataFormatString="{0:MM/dd/yyyy}" ReadOnly="true"></asp:BoundField> 
<asp:BoundField DataField="doc_rvw_sub_due_dt" HeaderText="Due Date" SortExpression="doc_rvw_sub_due_dt" DataFormatString="{0:MM/dd/yyyy}" ReadOnly="true" /> 
<asp:TemplateField AccessibleHeaderText="Review Status" HeaderText="Review Status" SortExpression="doc_rvw_sub_status_list"> 
<EditItemTemplate> 
<asp:DropDownList 
ID="DropDownList1" 
runat="server" 
AutoPostBack="True" 
DataSourceID="sdc_doc_rvw_sub_status_list" 
DataTextField="rvw_status" 
DataValueField="rvw_status_id_pk" 
AppendDataBoundItems="true" 
SelectedValue='<%# Bind("doc_rvw_sub_status_list") %>'> 
<asp:ListItem Value="">Please Select</asp:ListItem> 
</asp:DropDownList> 
</EditItemTemplate> 
<ItemTemplate> 
<asp:Label ID="Label1" runat="server" Text='<%# Bind("rvw_status") %>'></asp:Label> 
</ItemTemplate> 
<HeaderStyle HorizontalAlign="Center" /> 
</asp:TemplateField> 
<asp:TemplateField HeaderText="Status Set By" SortExpression="doc_rvw_sub_status_set_by"> 
<EditItemTemplate> 
<%--<asp:Label runat="server" Text='<%# Eval("doc_rvw_sub_by") %>' ID="Label1"></asp:Label>--%> 
<asp:TextBox ID="status_set_by_txt" runat="server" Text='<%# Eval("doc_rvw_sub_status_set_by") %>'></asp:TextBox> 
</EditItemTemplate> 
<ItemTemplate> 
<asp:Label runat="server" Text='<%# Bind("doc_rvw_sub_status_set_by") %>' ID="Label2"></asp:Label> 
</ItemTemplate> 
</asp:TemplateField> 
<asp:BoundField DataField="doc_rvw_sub_status_dt_set" HeaderText="Status Date" SortExpression="doc_rvw_sub_status_dt_set" DataFormatString="{0:MM/dd/yyyy}" ReadOnly="true" /> 
<asp:BoundField Visible="false" DataField="doc_rvw_id_fk" HeaderText="Document ID" SortExpression="doc_rvw_id_fk" ReadOnly="true"></asp:BoundField> 
</Columns> 
</asp:GridView> 

這裏是在SqlDataSource:

<asp:SqlDataSource 
ID="sdc_gv_rvw_sub" 
runat="server" 
ConflictDetection="CompareAllValues" 
ConnectionString="<%$ ConnectionStrings:idrfConnectionString %>" 
InsertCommand="INSERT INTO [tbl_doc_rvw_sub] ([doc_rvw_sub_by], [doc_rvw_sub_recip_list], [doc_rvw_sub_dt], [doc_rvw_sub_status_list], [doc_rvw_id_fk]) VALUES (@doc_rvw_sub_by, @doc_rvw_sub_recip_list, @doc_rvw_sub_dt, @doc_rvw_sub_status_list, @doc_rvw_id_fk)" 
OldValuesParameterFormatString="original_{0}" 
SelectCommand=" 
SELECT [doc_rvw_sub_id_pk] 
, [doc_rvw_sub_by] 
, [doc_rvw_sub_recip_list] 
, [doc_rvw_sub_dt] 
, [doc_rvw_sub_status_list] 
, tsl.rvw_status 
, [doc_rvw_id_fk] 
, [doc_rvw_sub_due_dt] 
, [doc_rvw_sub_status_set_by] 
, [doc_rvw_sub_status_dt_set] 
FROM [tbl_doc_rvw_sub] 
LEFT JOIN tbl_status_list tsl 
ON tbl_doc_rvw_sub.doc_rvw_sub_status_list=tsl.rvw_status_id_pk 
WHERE ([doc_rvw_id_fk] = @doc_rvw_id_fk)"> 
<SelectParameters> 
<asp:ControlParameter ControlID="gv_doc_rvw" Name="doc_rvw_id_fk" PropertyName="SelectedValue" Type="Int32" /> 
</SelectParameters> 
</asp:SqlDataSource> 

這裏是後面的代碼:

protected void gv_rvw_sub_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
SqlConnection idrf_cnxn = new SqlConnection("Data Source=WDBSVCPRD01\\SVCDB;Initial Catalog=idrf;Integrated Security=True"); 
{ 
SqlCommand updt_sub_rvw_cmd = new SqlCommand("UPDATE tbl_doc_rvw_sub(doc_rvw_sub_status_list, doc_rvw_sub_status_set_by, doc_rvw_sub_status_dt_set) WHERE ([email protected]_rvw_sub_status_list, [email protected]_rvw_sub_status_set_by, [email protected]_rvw_sub_status_dt_set)", idrf_cnxn); 
updt_sub_rvw_cmd.Parameters.AddWithValue("@doc_rvw_sub_status_list", gv_rvw_sub.FindControl("DropDownList1")); 
updt_sub_rvw_cmd.Parameters.AddWithValue("@doc_rvw_sub_status_set_by", HttpContext.Current.User.Identity.Name); 
updt_sub_rvw_cmd.Parameters.AddWithValue("@doc_rvw_sub_status_dt_set", DateTime.Now.ToString()); 

idrf_cnxn.Open(); 
updt_sub_rvw_cmd.ExecuteNonQuery(); 
idrf_cnxn.Close(); 

if (IsPostBack) 
{ 
gv_doc_rvw.DataBind(); 
} 
} 
} 

問題是我不斷收到以下錯誤 - 「語法不正確」(''

我哪裏出錯了?有一個更好的方法嗎?在SQL

+0

這就是你想從項目中刪除'SQL',並把它變成一個存儲過程中,錯誤告訴你什麼是錯誤的。所以你需要看看Insert語句或UpDate語句,並檢查語法是否正確以及適當的間隔也查找更新語句的正確語法 – MethodMan

+1

In更新語句'UPDATE tbl_doc_rvw_sub(doc_rvw_ sub_status_list'你能不能看到(在表名 –

+0

那麼,那很尷尬。謝謝尼爾。 – user1916528

回答