我陷入了一些异常的问题.当我在gridview中进行排序时,它会触发该网格的RowCommand事件而不是排序事件.下面是我的网格视图的HTML代码.
<asp:GridView ID="grdDefects" runat="server" AutoGenerateColumns="False" OnPageIndexChanging="grdDefects_PageIndexChanging"
OnSorting="grdDefects_Sorting" OnRowCommand="grdDefects_RowCommand" AllowSorting="true">
<PagerSettings Mode="NumericFirstLast" FirstPageText="First" LastPageText="Last"
NextPageText="Next" PreviousPageText="Prev" />
<Columns>
<%--<asp:TemplateField HeaderText="Id" SortExpression="ReasonID" Visible="false">
<ItemTemplate>
<asp:Label ID="lblReasonID" runat="server" Text='<%# Bind("ReasonID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>--%>
<asp:BoundField DataField="DefectId" HeaderText="Id" />
<asp:BoundField DataField="DefectName" HeaderText="Defect" sortExpression="DefectName" />
<asp:BoundField DataField="Department" HeaderText="Department Name" sortExpression="Department" />
<%-- <asp:ButtonField ControlStyle-CssClass="btns" ButtonType="Button" CommandName="Update"
Text="Edit" >
<ControlStyle CssClass="btns"></ControlStyle>
</asp:ButtonField>--%>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="editBtn" runat="server" Text="EDIT" CommandArgument='<%# Eval("DefectId") %>' CssClass="btns"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)
//这是处理这些事件的代码.
protected void grdDefects_Sorting(object sender, GridViewSortEventArgs e)
{
try
{
if …Run Code Online (Sandbox Code Playgroud) <asp:TemplateField>
<ItemTemplate>
<table width="540" cellpadding="5">
<tr>
<td align="left" style="width:60%;">
<img src='PurchaseHandler.ashx?ProductID=<%# Eval("ProductID")%>'
alt="<%# Eval("ProductName") %>" />
</td>
<td align="left">
<h3 style="text-align:left;">
<asp:Label ID="nameLabel" runat="server"
Text='<%# Eval("ProductName") %>' />
</h3>
<asp:Label ID="priceLabel" runat="server" Text='<%# Eval("Price") %>' />
<br />
<asp:LinkButton ID="cartLink" runat="server" Text="<b>Add to Cart</b>"
CommandName="Add" CommandArgument='<%# Eval("ProductID") %>' />
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)
我正在使用购物车业务对象,其中包含未在GridView中显示的字段.我在RowCommand事件处理程序中尝试接下来要做的是从所选行中检索其余的数据字段.这为我提供了所选行中正确的产品ID:
if (e.CommandName == "Add")
{
int productID = 0;
int.TryParse(e.CommandArgument as string, out productID);
// Big blank!
}
Run Code Online (Sandbox Code Playgroud)
如何从所选行中获取其余数据字段以填充我的购物车?通过解释,我可以使用productID挖掘从Session状态拉出的DataSet,并以这种方式获取数据.但是,我想要确定的是,是否存在类似于此的语法,可以在这种情况下使用?
DataRow[] rows = ds.Tables[0].Select("ProductID=" +
gridProducts.SelectedDataKey.Values["ProductID"].ToString()); …Run Code Online (Sandbox Code Playgroud) 我有一个gridview和一个linkbutton在这个gridview上.
当点击链接按钮时,rowCommand会触发,但是我想让用户用确认框确认点击,
我找不到办法.
进行更改后,我无法刷新 Updatepanel 中的 Gridview。有人可以帮忙吗?我在 GridView 中使用 rowCommand 删除行。我正在使用 ToolkitScriptManager 控件和 UpdatePanel。
<asp:UpdatePanel runat="server" ID="upt1">
<ContentTemplate>
<asp:GridView ID="gwSubG1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" AutoGenerateColumns="False" Width="600px" OnSelectedIndexChanged="gwSubG1_SelectedIndexChanged" DataKeyNames="One_Grop_Id" OnRowCommand="gwSubG1_RowCommand" OnRowDeleting="gwSubG1_RowDeleting">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:BoundField DataField="Grop_Name" HeaderText="Group One" ItemStyle-HorizontalAlign="Center" HeaderStyle-CssClass="HeaderCenter">
<HeaderStyle CssClass="HeaderCenter" />
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="ORG_Grp_Nam" HeaderText="Main Group" ItemStyle-HorizontalAlign="Center" HeaderStyle-CssClass="HeaderCenter">
<HeaderStyle CssClass="HeaderCenter" />
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="btnDelete" ImageUrl="~/Theme/Icon/info.png" CausesValidation="false" runat="server" CommandArgument='<%# Eval("One_Grop_Id") %>' CommandName="Delete" AlternateText="Delete" OnClientClick="return confirm('are you sure?');" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel> …Run Code Online (Sandbox Code Playgroud) 我在尝试在gridview中触发rowcommand事件时遇到问题.我按照MSDNet的代码示例,但我无法弄清楚它为什么不起作用.代码如下.谢谢.
<asp:GridView ID="GridViewProducts" runat="server" AutoGenerateColumns="False"
BackColor="White" BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px"
CellPadding="5" CellSpacing="1" DataKeyNames="Pkey"
DataSourceID="SqlDataSourceProducts" ForeColor="Black" GridLines="Vertical">
<FooterStyle BackColor="#CCCCCC" />
<PagerSettings PageButtonCount="20" />
<Columns>
<asp:BoundField DataField="Product" HeaderText="Product" >
<HeaderStyle HorizontalAlign="Left" />
<ItemStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:TemplateField HeaderText="Interest">
<ItemTemplate>
<asp:DropDownList ID="ddlProductInterest" runat="server" SelectedValue='<%# Bind("ProductInterest") %>'>
<asp:ListItem></asp:ListItem>
<asp:ListItem>Low</asp:ListItem>
<asp:ListItem>Medium</asp:ListItem>
<asp:ListItem>High</asp:ListItem>
<asp:ListItem>None</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:Button runat="server" ID="TestButton" Text="Button" CommandName="Test"
CommandArgument="<%# CType(Container, GridViewRow).RowIndex %>" />
</ItemTemplate>
<HeaderStyle HorizontalAlign="center" />
<ItemStyle HorizontalAlign="center" />
</asp:TemplateField>
</Columns>
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#000099" Font-Bold="True" …Run Code Online (Sandbox Code Playgroud)