GridView 控件应用
//前台布局
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4"
ForeColor="#333333" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowEditing="GridView1_RowEditing"
OnRowUpdating="GridView1_RowUpdating" OnRowDataBound="GridView1_RowDataBound"
ShowHeaderWhenEmpty="True">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:TemplateField HeaderText="操作" ShowHeader="False" >
<EditItemTemplate>
<asp:ImageButton ID="ImageButton1" runat="server" CausesValidation="True" CommandName="Update"
ImageUrl="/Images/theme/icons/correct.png" Text="更新" ToolTip="更新" />
<asp:ImageButton ID="ImageButton2" runat="server" CausesValidation="False"
CommandName="Cancel" ImageUrl="/Images/theme/icons/wrong.png" Text="取消" ToolTip="取消" />
</EditItemTemplate>
<ItemTemplate>
<asp:ImageButton ID="ImageButton1" runat="server" CausesValidation="False" CommandName="Edit"
ImageUrl="/Images/theme/icons/edit.png" Text="编辑" ToolTip="编辑" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" Width="100px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="id" Visible="False">
<ItemTemplate>
<asp:Label ID="labId" runat="server" Text='<%# Bind("pio_info_detail_id") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="序号">
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Bind("pio_sn") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="30px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="前缀">
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%# Bind("prefix") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="50px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="配件号">
<ItemTemplate>
<asp:Label ID="Label4" runat="server" Text='<%# Bind("parts_no") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="60px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="配件名称">
<ItemTemplate>
<asp:Label ID="Label5" runat="server" Text='<%# Bind("description_ch") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="100px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="库位号">
<EditItemTemplate>
<asp:TextBox ID="txtMajorNumber" runat="server" Text='<%# Bind("Major_Number") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="labSeatName" runat="server" Text='<%# Bind("Major_Number") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="60px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="采购订单号">
<ItemTemplate>
<asp:Label ID="Label7" runat="server" Text='<%# Bind("po_no") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="100px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="供应商发货单号">
<ItemTemplate>
<asp:Label ID="labVipsNo" runat="server" Text='<%# Bind("vips_no") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="100px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="发货数量">
<ItemTemplate>
<asp:Label ID="labVipsQty" runat="server" Text='<%# Bind("vips_qty") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="100px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="入库数量">
<EditItemTemplate>
<asp:TextBox ID="txtAvlQty" runat="server" Text='<%# Bind("available_Stock_Qty") %>'></asp:TextBox>
<br />
<asp:RegularExpressionValidator ID="validateQtyNum" runat="server" ControlToValidate="txtAvlQty"
ErrorMessage="请输入数字" ValidationExpression="^[0-9]+(.[0-9]{2})?$" ForeColor="Red"
Display="Dynamic"></asp:RegularExpressionValidator>
<comparevalidator ></comparevalidator>
<asp:RequiredFieldValidator ID="validateQtyNeed" runat="server" ControlToValidate="txtAvlQty"
ErrorMessage="请输入入库数量" ForeColor="Red" Display="Dynamic"></asp:RequiredFieldValidator>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="labAvlQty" runat="server" Text='<%# Bind("available_Stock_Qty") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="100px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="已入库数量">
<ItemTemplate>
<asp:Label ID="labInStockQty" runat="server" Text='<%# Bind("in_stock_qty") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="100px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="差异数量">
<ItemTemplate>
<asp:Label ID="labDcrQty" runat="server" Text='<%# Bind("dcr_qty") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="100px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="dcr_type" Visible="false">
<ItemTemplate>
<asp:Label ID="labDcrType" runat="server" Text='<%# Bind("dcr_type") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="差异类型">
<EditItemTemplate>
<cc1:SingleList ID="ddlDcrType" runat="server" Width="80px" IsShowEmptyItem="true" ClientIDMode="Static">
</cc1:SingleList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lab" runat="server" Text='<%# Bind("dcr_type_str") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="100px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="客户缺件数量">
<ItemTemplate>
<asp:Label ID="Label13" runat="server" Text='<%# Bind("lack_qty") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="100px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="销售订单号">
<ItemTemplate>
<asp:Label ID="Label14" runat="server" Text='<%# Bind("so_no") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="100px" />
</asp:TemplateField>
</Columns>
<EditRowStyle BackColor="White" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#63829e" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#EFF3FB" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F5F7FB" />
<SortedAscendingHeaderStyle BackColor="#6D95E1" />
<SortedDescendingCellStyle BackColor="#E9EBEF" />
<SortedDescendingHeaderStyle BackColor="#4870BE" />
</asp:GridView>
//后台事件
/// <summary>
/// cancel edit
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
this.GridView1.EditIndex = -1;
SearchData4GridView();
}
/// <summary>
/// row edit
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
int index = e.NewEditIndex;
this.GridView1.EditIndex = e.NewEditIndex;
SearchData4GridView();
TextBox txtAvlQty = (TextBox)this.GridView1.Rows[index].FindControl("txtAvlQty");
Label labVipsQty = (Label)this.GridView1.Rows[index].FindControl("labVipsQty");
Label labDcrQty = (Label)this.GridView1.Rows[index].FindControl("labDcrQty");
//Label labAvlQty = (Label)this.GridView1.Rows[index].FindControl("labAvlQty");//可入库数量
txtAvlQty.Attributes.Add("onpropertychange", "getDcrQty('" + labVipsQty.ClientID + "','" + txtAvlQty.ClientID + "','" + labDcrQty.ClientID + "')");
}
/// <summary>
/// update
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
int index = e.RowIndex;
string id = ((Label)GridView1.Rows[index].FindControl("labId")).Text.ToString();
string in_stock_qty = ((Label)this.GridView1.Rows[index].FindControl("labInStockQty")).Text.ToString();//已入库数量
string vips_qty = ((Label)this.GridView1.Rows[index].FindControl("labVipsQty")).Text.Trim().ToString();
string avlQty = ((TextBox)this.GridView1.Rows[index].FindControl("txtAvlQty")).Text.Trim().ToString();//入库数量
//DropDownList ddlSeat = (DropDownList)this.GridView1.Rows[index].FindControl("ddlSeat");
string majorNumber = ((TextBox)this.GridView1.Rows[index].FindControl("txtMajorNumber")).Text.Trim().ToString();
DropDownList ddlDcrType = ((DropDownList)this.GridView1.Rows[index].FindControl("ddlDcrType"));
decimal dcrQty = GetDcrQty(vips_qty, avlQty); //发货-入库=差异数量
if (dcrQty > 0 && string.IsNullOrEmpty(ddlDcrType.SelectedValue))
{
Soyisoft.Web.WebUtil.ShowMessage(this.Page, "该配件存在差异,请选择差异类型!");
return;
}
else if (dcrQty < 0)
{
Soyisoft.Web.WebUtil.ShowMessage(this.Page, "入库数量不能大于发货数量!");
return;
}
decimal inStockQtyDec = decimal.Parse(in_stock_qty);
decimal vipsQtyDec = decimal.Parse(vips_qty);
decimal avlQtyDec = decimal.Parse(avlQty);
string strSelect = "pio_info_detail_id=@pio_info_detail_id";
strSelect = SqlUtil.setString(strSelect, "@pio_info_detail_id", id);
DataRow[] dr = dt4GridView.Select(strSelect);
//dr[0]["Storage_Seat_ID"] = ddlSeat.SelectedValue;//库位
dr[0]["major_number"] = majorNumber;
dr[0]["in_stock_qty"] = in_stock_qty; //已入库数量
dr[0]["dcr_qty"] = dcrQty;
dr[0]["dcr_type_str"] = ddlDcrType.SelectedItem.Text;//差异类型
dr[0]["dcr_type"] = ddlDcrType.SelectedValue;
dr[0]["available_Stock_Qty"] = avlQty;
this.GridView1.EditIndex = -1;
SearchData4GridView();
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
Label dcrType = (Label)e.Row.FindControl("labDcrType");
string strType = string.Empty;
if (dcrType != null)
{
strType = dcrType.Text;
}
SingleList ddlSeat = ((SingleList)e.Row.FindControl("ddlSeat"));
if (ddlSeat != null)
{
ddlSeat.ShowCodeList(PlmCommon.GetStorageSeat(WebCommon.Current.User.STATION_ID), string.Empty);
}
SingleList ddlDcrType = ((SingleList)e.Row.FindControl("ddlDcrType"));
if (ddlDcrType != null)
{
ddlDcrType.ShowCodeList(ListHelper.GetCodeByGroudID(PlmConst.PO_DCR_TYPE), strType);
}
}