使用CommandField
在Gridview的每一行中创建编辑按钮时,单击后会显示更新/取消按钮,因此您可以接受/取消更改。
但是,我想要一个包含工具提示文本的编辑按钮,由于CommandField
没有工具提示属性,我使用了TemplateField
。它与删除按钮一起使用,但我遇到了编辑按钮的问题:
<asp:GridView ID="GridView1" runat="server"
AllowPaging="True" AllowSorting="True"
DataMember="DefaultView"
DataSourceID="SqlDataSource1" AutoGenerateColumns="False"
DataKeyNames=FIELD,FIELD,FIELD" CellPadding="4" ForeColor="#333333" Width="90%"
Height="90%" Font-Size="Small">
<RowStyle BackColor="#EFF3FB" />
<Columns>
<asp:BoundField DataField="FIELD" HeaderText="FIELD" ReadOnly="True"
SortExpression="FIELD" />
<asp:BoundField DataField="FIELD" HeaderText="FIELD"
SortExpression="FIELD" />
<asp:BoundField DataField="FIELD" HeaderText="FIELD"
SortExpression="FIELD" />
<asp:BoundField DataField="FIELD" HeaderText="FIELD" ReadOnly="True"
SortExpression="FIELD" />
<asp:BoundField DataField="FIELD" HeaderText="FIELD" ReadOnly="True"
SortExpression="FIELD" />
<asp:BoundField DataField="FIELD" HeaderText="FIELD"
SortExpression="FIELD" />
<asp:CommandField ButtonType="Image" Visible="true" EditText="Edit" ShowEditButton="True" EditImageUrl="images/pencil1.png"></asp:CommandField>
<asp:TemplateField >
<ItemTemplate>
<asp:ImageButton ID="deleteButton" runat="server" CommandName="Delete" Text="Delete"
OnClientClick="return confirm('¿Are you sure?');" ToolTip="delete" ImageUrl="images/DeleteRed1.png" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#2461BF" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:DBUserInterfaceConnectionString %>"
SelectCommand="SELECT ... FROM ... INNER JOIN ... ON ..."
DeleteCommand="DELETE FROM ... WHERE ...=@param;"
UpdateCommand="UPDATE ... SET ... = @param, ... = @param2 WHERE ... = @param3 and ... = @param4 and ... = @param5;"
>
</asp:SqlDataSource>
正如我之前所说,我将CommandField
替换为:
<asp:TemplateField >
<ItemTemplate>
<asp:ImageButton ID="editButton" runat="server" CommandName="Edit" Text="Edit" ToolTip="Edit" ImageUrl="images/pincel1.png" />
</ItemTemplate>
</asp:TemplateField >
但是没有出现“更新/取消”按钮,因此我无法更新/编辑任何内容。为什么会这样?
实现成功编辑按钮的任何想法?
注意:
两个按钮后面都没有vb代码,由于某种原因,删除按钮仅与DeleteCommand
中的SqlDataSource
一起使用,如果我尝试删除该命令,则会提示错误,因为没有指定DeleteCommand。
UpdateCommand
没有任何意义,可以删除。我可以将它用作更新按钮而不是编辑按钮,但是当我尝试时,它表示@params
未知,这就是我决定使用编辑按钮的原因。
答案 0 :(得分:5)
如果要为GridView控件中的每个项目设置自己定义的用户定义内容,则使用<asp:TemplateField>
。
如果要使用预定义的命令按钮执行选择,编辑或删除操作,则使用<asp:CommandField>
。检查MSDN here。
因此,当您使用自己的用户定义方式编辑按钮时,还需要为Update&amp ;;指定自定义内容方式。 <EditItemTemplate>
内的取消按钮为:
<asp:TemplateField >
<ItemTemplate>
<asp:ImageButton ID="editButton" runat="server" CommandName="Edit" Text="Edit"
ToolTip="Edit" ImageUrl="images/pincel1.png" />
</ItemTemplate>
<EditItemTemplate>
<asp:ImageButton ID="BtnUpdate" runat="server" CommandName="Update" Text="Update"
OnClick="BtnUpdate_Click" ImageUrl="images/Update.png"/>
<asp:ImageButton ID="BtnCancel" runat="server" CommandName="Cancel" Text="Cancel"
OnClick="BtnCancel_Click" ImageUrl="images/Cancel.png"/>
</EditItemTemplate>
</asp:TemplateField >
只需确保,仅当您再次提供自定义实施更新和&amp;取消逻辑,您还可以为这两个更新和取消按钮定义onclick事件。否则从这些按钮的标记中删除OnClick
。
[BtnUpdate_Click
&amp; BtnCancel_Click
这里。]
答案 1 :(得分:1)
我认为既然您已将其转换为TemplateField,则所有自动运行的内容(如更新/取消按钮)都已被禁用。我打赌你需要使用更新和取消按钮添加<EditItemTemplate>
,并使用CommandName
将它们挂钩到相关命令。