根据特定的行值(类型),我必须在 EditTemplateField 内使用 TextBox 或 DropDownlist(只有其中一个)。如何在 EditItemTemplate 内有条件地绑定控件,以便告诉 UpdateMethod 哪个控件是“值”字段要考虑的?
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="LabelType" runat="server" Text='<%# Eval("Type") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:Label ID="LabelType" runat="server" Text='<%# Eval("Type") %>'></asp:Label>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<ItemTemplate>
<asp:Label ID="LabelValue" runat="server" Text='<%# Eval("Value") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<div style="text-align:center">
<asp:TextBox ID="TextBoxValue" runat="server" Text='<%# Bind("Value") %>'></asp:TextBox>
<asp:DropDownList ID="DropDownListValue" runat="server" SelectedValue='<%# Bind("Value") %>'>
</asp:DropDownList>
</div>
</EditItemTemplate>
</asp:TemplateField>
GridView 的 UpdateMethod 将“Value”作为输入参数,它必须能够决定是从 DropDownListValue 还是 TextBoxValue 中获取。
<asp:ObjectDataSource ID="ODSResults" runat="server"
SelectMethod="GetDataByIdDevice"
TypeName="DataSetSWCTableAdapters.DispositivoParametro_TableAdapter"
UpdateMethod="Save">
<SelectParameters>
<asp:QueryStringParameter Name="IdDevice" QueryStringField="id" Type="Int32" />
<asp:ProfileParameter Name="Culture" PropertyName="Cultura" Type="String" />
<asp:Parameter Name="ParameterCode" Type="String" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="IdDevice" Type="Int32" />
<asp:Parameter Name="IdParameter" Type="Int32" />
<asp:Parameter Name="Value" Type="Int64" />
</UpdateParameters>
</asp:ObjectDataSource>
我试图隐藏/显示控件 TextBoxValue 和 DropDownListValue(使用属性“Visible”),但它不起作用:UI 很好,但 UpdateMethod 总是接收 0 作为输入值(我猜是空字符串转换的结果)。