ASP.NET BoundFields没有设置UpdateParameters

| 我有一些绑定字段,但是它们似乎没有为我的SQL语句设置UpdateParameters。我确实有一些在SqlDataSource Update上运行的代码来为非绑定字段设置UpdateParameters,所以我不确定这是否引起了问题。 我在下面插入了我的代码。 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>
                        <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数据源
<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();
    }
    
已邀请:

要回复问题请先登录注册