I have a few bound fields, but they don't seem to be setting the UpdateParameters for my SQL statement. I do have some code that runs on SqlDataSource Update to set UpdateParameters for non bound fields, so I'm not sure if that is causing the problem.
I've inserted my code below.
ASP.NET GRIDVIEW
<asp:UpdatePanel ID="reconcileUpdatePanel" runat="server">
<ContentTemplate>
<asp:GridView ID="reconcileGrid" runat="server" AutoGenerateColumns="False"
DataKeyNames="ItemID" DataSourceID="reconcileDataSource" >
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" ReadOnly="true" />
<asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" ReadOnly="true"/>
<asp:BoundField DataField="last_known_location" HeaderText="Last Known Location" SortExpression="last_known_location" ReadOnly="true" />
<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<asp:Label ID="lblStatus" runat="server" Text='<%# evalStatus(Eval("Stat")) %>'></asp:Label></ItemTemplate><EditItemTemplate>
<asp:DropDownList ID="ddlReconcileStatus" runat="server" OnSelectedIndexChanged="ddlReconcileStatus_SelectedIndexChanged" AutoPostBack="true" >
<asp:ListItem Value="3" Text="Allocated"></asp:ListItem><asp:ListItem Value="4" Text="Transferred"></asp:ListItem></asp:DropDownList></EditItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="Transfer Location">
<EditItemTemplate>
<asp:DropDownList ID="ddlTransferLocation" runat="server"
DataSourceID="ddlTransferLocationDataSource" DataTextField="Name"
DataValueField="ID" Enabled="false" ></asp:DropDownList>
开发者_Go百科 <asp:SqlDataSource
ID="ddlTransferLocationDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT [ID], [Name] FROM [TransferLocation]">
</asp:SqlDataSource>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
SQL DATA SOURCE
<asp:SqlDataSource ID="reconcileDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
OnUpdating="reconcileGrid_Updating"
SelectCommand="GetReconcileItems" SelectCommandType="StoredProcedure"
UpdateCommand="UpdateReconcileItems" UpdateCommandType="StoredProcedure">
<UpdateParameters>
<asp:Parameter Name="ItemID" />
<asp:Parameter Name="TransType" Type="String" />
<asp:Parameter Name="LocationID" Type="String" />
<asp:Parameter Name="Description" Type="String" />
<asp:Parameter Name="Stat" Type="String" />
<asp:Parameter Name="TransferLocation" Type="String" />
</UpdateParameters>
</asp:SqlDataSource>
C# SqlDataSourceUpdating
protected void reconcileGrid_Updating(object sender, SqlDataSourceCommandEventArgs e)
{
DropDownList ddlReconcileStatus = (DropDownList)reconcileGrid.Rows[reconcileGrid.EditIndex].Cells[0].FindControl("ddlReconcileStatus");
DropDownList ddlTransferLocation = (DropDownList)reconcileGrid.Rows[reconcileGrid.EditIndex].Cells[0].FindControl("ddlTransferLocation");
// Set the Stat Value
reconcileDataSource.UpdateParameters["Stat"].DefaultValue = ddlReconcileStatus.SelectedValue.ToString();
//Test to see if the value needs to be set or not
if (ddlReconcileStatus.SelectedValue == "4")
reconcileDataSource.UpdateParameters["TransferLocation"].DefaultValue = ddlTransferLocation.SelectedValue.ToString();
if (ddlReconcileStatus.SelectedValue == "3")
reconcileDataSource.UpdateParameters["TransferLocation"].DefaultValue = null;
string test1 = reconcileDataSource.UpdateParameters["LocationID"].DefaultValue.ToString();
}
精彩评论