📄 check.aspx.cs
字号:
myGridView1.DataBind();
//光标
GridViewRow editRow = myGridView1.Rows[myGridView1.EditIndex];
Page.SetFocus((TextBox)editRow.FindControl("txtCheckQuantity"));
}
/// <summary>
/// 用户在没有保存小票之前,详细发料信息暂时不写入数据库,
/// 先存在一DataTable中。
/// 等编辑完成保存的时候,
/// 用存储过程完成主从表记录的插入,以保证数据完整性和一致性
/// </summary>
/// <param name="ItemsID"></param>
private void AddCheck(GridViewRow addItemsRow)
{
DataTable myTable = Session["CheckTable"] as DataTable;
DataRow dr = myTable.NewRow();
//DataRowView rowView = (DataRowView)addItemsRow.DataItem;
//nnd,第一列是“发料”链接。从第2列起算
dr[0] = addItemsRow.Cells[1].Text;
dr[1] = addItemsRow.Cells[2].Text;
dr[2] = addItemsRow.Cells[3].Text;
dr[3] = addItemsRow.Cells[4].Text;
dr[4] = Convert.ToDecimal(addItemsRow.Cells[5].Text);
dr[5] = Convert.ToDecimal(addItemsRow.Cells[6].Text);
/*string strScript = "";
strScript = "<script>";
strScript = strScript + "prompt('请输入实发数量:','0');";
strScript = strScript + "</script>";
Response.Write(strScript);*/
//dr[6] = 0;
dr[7] = 0;
//剩余库存暂时等于初始库存
dr[8] = dr[5];
dr[9] = "0";
myTable.Rows.InsertAt(dr, 0);
Session["CheckTable"] = myTable;
}
private void GetCheckItems(GridView myGridView)
{
DataTable myTable = Session["CheckTable"] as DataTable;
myGridView.DataSource = myTable;
myGridView.DataBind();
}
/// <summary>
/// VS2005 无法自动Paging,所以必须编程实现。
/// 同理参见protected void GetWarehouseItems(GridView myGridView)
/// 注意在翻页之前必须重新指定DataSource,否则空白。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView myGridView = (GridView)sender;
GetCheckItems(myGridView);
myGridView.PageIndex = e.NewPageIndex;
myGridView.DataBind();
}
protected void GridView2_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView myGridView = (GridView)sender;
GetWarehouseItems(myGridView);
myGridView.PageIndex = e.NewPageIndex;
myGridView.DataBind();
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView myGridView = (GridView)sender;
GetCheckItems(myGridView);
myGridView.EditIndex = e.NewEditIndex;
myGridView.DataBind();
//光标,后面想想怎么默认全部选中
GridViewRow editRow = myGridView.Rows[e.NewEditIndex];
Page.SetFocus((TextBox)editRow.FindControl("txtCheckQuantity"));
}
/// <summary>
/// 请注意这里用于获取待删除GridViewRow某一Cell中文本的方法。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
DataTable myTable = Session["CheckTable"] as DataTable;
GridView myGridView = (GridView)sender;
GridViewRow delRow = myGridView.Rows[e.RowIndex];
//由于可能在后面加入sorting的功能,所以不能简单地用GridView的e.RowIndex代表Session中CheckTable的index
for (int i = 0; i < myTable.Rows.Count; i++)
{
string strTemp = myTable.Rows[i][0].ToString();
if (strTemp == ((Label)delRow.Cells[1].FindControl("lblCheckItemsID")).Text)
{
myTable.Rows[i].Delete();
break;
}
}
Session["CheckTable"] = myTable;
GetCheckItems(myGridView);
}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView myGridView = (GridView)sender;
GetCheckItems(myGridView);
myGridView.EditIndex = -1;
myGridView.DataBind();
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridView myGridView = (GridView)sender;
GridViewRow updateRow = myGridView.Rows[e.RowIndex];
DataTable myTable = Session["CheckTable"] as DataTable;
//由于可能在后面加入sorting的功能,所以不能简单地用GridView的e.RowIndex代表Session中CheckTable的index
for (int i = 0; i < myTable.Rows.Count; i++)
{
string strTemp = myTable.Rows[i]["CheckItemsID"].ToString();
if (strTemp == ((Label)updateRow.Cells[1].FindControl("lblCheckItemsID")).Text)
{
TextBox txtCheckQuantity = (TextBox)updateRow.FindControl("txtCheckQuantity");
myTable.Rows[i]["CheckQuantity"] = Convert.ToDecimal(txtCheckQuantity.Text);
myTable.Rows[i]["CheckItemsExtra"] = Convert.ToDecimal(myTable.Rows[i]["CheckQuantity"]) - Convert.ToDecimal(myTable.Rows[i]["CheckItemsInventory"]);
myTable.Rows[i]["CheckItemsExtraMoney"] = Convert.ToDecimal(myTable.Rows[i]["CheckItemsExtra"]) * Convert.ToDecimal(myTable.Rows[i]["CheckItemsStandardPrice"]);
DropDownList drpCheckItemsReason = (DropDownList)updateRow.FindControl("drpCheckItemsReason");
myTable.Rows[i]["CheckItemsReason"] = Convert.ToInt32(drpCheckItemsReason.SelectedValue);
break;
}
}
Session["CheckTable"] = myTable;
GetCheckItems(myGridView);
myGridView.EditIndex = -1;
myGridView.DataBind();
Page.SetFocus((TextBox)FormView1.FindControl("ItemIDTextBox"));
}
/// <summary>
/// 设置格式,更主要的是金额合计并验证是否超出定额
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
// add the UnitPrice to the running total variables
for (int i = 5; i < 12; i++)
e.Row.Cells[i].HorizontalAlign = HorizontalAlign.Right;
priceTotal += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "CheckItemsExtraMoney"));
}
else if (e.Row.RowType == DataControlRowType.Footer)
{
e.Row.Cells[8].Text = "金额总计:";
// for the Footer, display the running totals
e.Row.Cells[9].Text = priceTotal.ToString("c");
e.Row.Cells[9].HorizontalAlign = HorizontalAlign.Right;
e.Row.Font.Bold = true;
hidPriceAtlast.Value = priceTotal.ToString();
priceTotal = 0;
}
}
private bool isAccepted = false;
//事实上, 应该是 int DeliveryID,但是省得类型转换
private bool getIsAccepted(string DeliveryID)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MySqlProviderConnection"].ConnectionString);
string strQuery = "Select IsReviewed From InventoryCheckMain Where InventoryCheckID=" + DeliveryID;
SqlCommand command = new SqlCommand(strQuery, con);
con.Open();
SqlDataReader reader = command.ExecuteReader();
try
{
while (reader.Read())
{
return Convert.ToBoolean(reader[0].ToString());
}
}
finally
{
reader.Close();
}
return false;
}
protected void GridView4_DataBound(object sender, EventArgs e)
{
if (GridView3.SelectedValue != null)
{
string strDeliveryID = GridView3.SelectedValue.ToString();
isAccepted = Convert.ToBoolean(getIsAccepted(strDeliveryID));
((CommandField)GridView4.Columns[10]).ShowEditButton = !isAccepted;
GridView4.Columns[11].Visible = !isAccepted;
if (!isAccepted)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MySqlProviderConnection"].ConnectionString);
string strQuery = "";
strQuery = "SELECT ItemID FROM [Inventory] Where [Inventory].IsDeleted=0" +
" And [Inventory].WareHouseID in (Select WareHouseID From InventoryCheckMain Where InventoryCheckID=" + strDeliveryID
+ ") And [Inventory].ItemID Not In (Select ItemID From InventoryCheckDetail Where InventoryCheckID=" + strDeliveryID + ")";
SqlDataAdapter adapter = new SqlDataAdapter(strQuery, con);
DataSet ds = new DataSet();
adapter.Fill(ds);
if (ds.Tables[0].Rows.Count != 0 && GridView4.FooterRow != null)
{
DropDownList drpItem = (DropDownList)GridView4.FooterRow.FindControl("drpItem");
drpItem.DataSource = ds.Tables[0];
drpItem.DataBind();
drpItem.Visible = true;
LinkButton LinkButtonEditAdd = (LinkButton)GridView4.FooterRow.FindControl("LinkButtonEditAdd");
LinkButtonEditAdd.Visible = true;
}
}
}
}
/// <summary>
/// 查询里面的对外调拨历史明细金额合计
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView4_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
for (int i = 0; i < 2; i++)
e.Row.Cells[i].HorizontalAlign = HorizontalAlign.Left;
for (int i = 2; i < 9; i++)
e.Row.Cells[i].HorizontalAlign = HorizontalAlign.Right;
e.Row.Cells[9].HorizontalAlign = HorizontalAlign.Left;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -