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="更新" />
                            &nbsp;<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);
            }
        }

posted @ 2013-12-03 11:12  一朵小蓝花  阅读(195)  评论(0编辑  收藏  举报