2010-03-15 62 views
1

我试图将我的gridview连接到LinqDataSource来选择,更新,插入和删除记录。我能够进入编辑模式并取消编辑模式,但是当我点击更新时,什么也没有发生。不能“启用编辑”我gridview

我发现了一些网上说的检查GridView智能标签中的“启用编辑”框,但是当我进入智能标签时,唯一出现的复选框是:启用分页,启用排序并启用选择。其他人没有出现。有人看到我在下面做的事情有问题吗?

<asp:GridView ID="gv_Personnel" 
        runat="server" 
        OnRowDataBound="gv_Personnel_DataBind" 
        AutoGenerateColumns="False" 
        ShowFooter="True" 
        DataKeyNames="BudgetLineID" 
        AutoGenerateEditButton="True" 
        AutoGenerateDeleteButton="True" 
        DataSourceID="lds_Personnel" 
        > 
     <Columns>     
      <asp:BoundField HeaderText="Level of Staff" DataField="LineDescription" /> 
      <asp:BoundField HeaderText="Hrs/Units requested" DataField="NumberOfUnits" /> 
      <asp:BoundField HeaderText="Hrs/Units of Applicant Cost Share" DataField="" NullDisplayText="0" /> 
      <asp:BoundField HeaderText="Hrs/Units of Partner Cost Share" DataField="" NullDisplayText="0" /> 
      <asp:BoundField FooterStyle-Font-Bold="true" 
       FooterText="TOTAL PERSONNEL SERVICES:" HeaderText="Rate" 
       DataFormatString="{0:C}" DataField="UnitPrice" > 
      <FooterStyle Font-Bold="True" /> 
      </asp:BoundField> 
      <asp:TemplateField HeaderText="Amount Requested" 
       ItemStyle-HorizontalAlign="Right" FooterStyle-HorizontalAlign="Right" 
       FooterStyle-BorderWidth="2" FooterStyle-Font-Bold="true"> 
       <FooterStyle BorderWidth="2px" Font-Bold="True" HorizontalAlign="Right" /> 
       <ItemStyle HorizontalAlign="Right" /> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Applicant Cost Share" 
       ItemStyle-HorizontalAlign="Right" FooterStyle-HorizontalAlign="Right" 
       FooterStyle-BorderWidth="2" FooterStyle-Font-Bold="true"> 
       <FooterStyle BorderWidth="2px" Font-Bold="True" HorizontalAlign="Right" /> 
       <ItemStyle HorizontalAlign="Right" /> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Partner Cost Share" 
       ItemStyle-HorizontalAlign="Right" FooterStyle-HorizontalAlign="Right" 
       FooterStyle-BorderWidth="2" FooterStyle-Font-Bold="true"> 
       <FooterStyle BorderWidth="2px" Font-Bold="True" HorizontalAlign="Right" /> 
       <ItemStyle HorizontalAlign="Right" /> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Total Projet Cost" 
       ItemStyle-HorizontalAlign="Right" FooterStyle-HorizontalAlign="Right" 
       FooterStyle-BorderWidth="2" FooterStyle-Font-Bold="true"> 
       <FooterStyle BorderWidth="2px" Font-Bold="True" HorizontalAlign="Right" /> 
       <ItemStyle HorizontalAlign="Right" /> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 
    <asp:LinqDataSource ID="lds_Personnel" runat="server" 
     ContextTypeName="nrm.FRGPproposal.FrgpropDataContext" 
     Select="new (BudgetLineID, UnitPrice, LineDescription, NumberOfUnits)" 
     TableName="BudgetLines" 
     Where="ProposalID == @PropNumber &amp;&amp; BudgetLineTypeCode == @BudgetLineTypeCode" 
     EnableDelete="True" EnableInsert="True" EnableUpdate="True"> 
     <WhereParameters> 
      <asp:SessionParameter Name="PropNumber" SessionField="PropNumber" Type="Int32" /> 
      <asp:Parameter DefaultValue="S" Name="BudgetLineTypeCode" Type="Char" /> 
     </WhereParameters> 
    </asp:LinqDataSource> 

回答

1

您是否尝试过不使用匿名类型?在代码中,你不能更新匿名。数据库中的类型...

+0

上面的代码中的匿名类型是什么? – 2010-03-15 17:05:28

+0

Select =“new(BudgetLineID,UnitPrice,LineDescription,NumberOfUnits)” – citronas 2010-03-15 17:25:41

+0

是选择新建创建匿名类型;如果可能的话,与基本表一起工作。 – 2010-03-15 18:09:35

0

看起来像这是由我在我的LinqDataSoruce上设置了Select值引起的。请参阅下面更新的LDS:

<asp:LinqDataSource ID="lds_Personnel" runat="server" 
    ContextTypeName="nrm.FRGPproposal.FrgpropDataContext" 
    TableName="BudgetLines" 
    Where="ProposalID == @PropNumber &amp;&amp; BudgetLineTypeCode == @BudgetLineTypeCode" 
    EnableDelete="True" EnableInsert="True" EnableUpdate="True"> 
    <WhereParameters> 
     <asp:SessionParameter Name="PropNumber" SessionField="PropNumber" Type="Int32" /> 
     <asp:Parameter DefaultValue="S" Name="BudgetLineTypeCode" Type="Char" /> 
    </WhereParameters> 
</asp:LinqDataSource>