不幸的是,我正在处理的数据库在列名中有一个空格。我在GridView中有一个DropDownList,我正在尝试用DropDownList中用户选择的任何内容更新列。这是我如何使用DropDownList:
<asp:TemplateField HeaderText="Phase (edit)" SortExpression="EditedPhase">
<EditItemTemplate>
<asp:DropDownList ID="PhaseDropDownList" runat="server" DataSourceID="PhaseDropDown" DataTextField="Current Project Phase" DataValueField="Current Project Phase" SelectedValue='<%# Bind("Phase") %>'>
</asp:DropDownList>
</EditItemTemplate>
<asp:TemplateField>
以下是数据来源:
<asp:SqlDataSource ID="PhaseDropDown" runat="server" ConnectionString="<%$ ConnectionStrings:ODSConnectionString %>" SelectCommand="select distinct [Current Project Phase] from [Phase_Table]">
</asp:SqlDataSource>
以下是我的更新命令和参数:
UpdateCommand="UPDATE [Pipeline] SET EditedPhase = @[Current Project Phase]"
<UpdateParameters>
<asp:Parameter Name="[Current Project Phase]" Type="String"/>
</UpdateParameters>
经过一些研究后,我发现参数中没有空格,但大多数解决方案都使用了后面的代码。我没有代码,因为引入代码可能会破坏它(需要处理页面加载等)。如何解决当前的问题?
如果有拼写错误,抱歉。
答案 0 :(得分:0)
是的,不要在参数名称中使用空格;传递给参数的值虽然可以有空格,所以我不确定这是否是一个混乱点。例如,更新您的SQL查询,如:
UpdateCommand="UPDATE [Pipeline] SET EditedPhase = @CurrentProjectPhase">
<UpdateParameters>
<asp:Parameter Name="CurrentProjectPhase" Type="String" DefaultValue="Current Project Phase"/>
</UpdateParameters>
这里的值(DefaultValue是在没有提供值时提供给更新的默认值)可以有空格。但名字不能。您可以在代码中设置参数的DefaultValue,或使用功能更强大的参数(如会话,控制参数)从某些内容中获取值...