(较难)字典的用法

<ext:Grid ID="Grid1" EnableColumnLines="true" Title="表单明细" OnSort="Grid1_Sort" AllowSorting="true" SortField="NodeSymbol" OnAfterEdit="Grid1_AfterEdit"
EnableAfterEditEvent="true" PageSize="20" ShowBorder="true" BoxFlex="1" DataKeyNames="AID" BoxConfigAlign="Stretch" AllowCellEditing="true"
runat="server" OnPreRowDataBound="Grid1_PreRowDataBound" OnRowCommand="Grid1_RowCommand">
<Toolbars>
<ext:Toolbar runat="server">
<Items>
<ext:TextBox runat="server" Label="关键字" ID="KeyWord" LabelAlign="Right" Width="500"/>
<ext:ToolbarFill ID="ToolbarFill1" runat="server"/>
<ext:Button ID="Search" Text="查询" runat="server" OnClick="Search_Click"/>
<ext:Button ID="AddEquip" Text="新建" runat="server" OnClientClick="AddEquip_Click();return 0;"/>

</Items>
</ext:Toolbar>
</Toolbars>
<Columns>
<ext:RowNumberField EnablePagingNumber="true" Width="50" HeaderText="序号"/>
<ext:BoundField Width="300" SortField="DocumentName" DataField="DocumentName" HeaderText="文档名称" Hidden="true" />
<ext:RenderField DataField="Field" ColumnID="Field" HeaderText="字段名称" Width="150" >
<Editor>
<ext:TextBox ID="Field" runat="server"></ext:TextBox>
</Editor>
</ext:RenderField>
<ext:RenderField DataField="EnglishName" ColumnID="EnglishName" HeaderText="英文名称" Width="250" >
<Editor>
<ext:TextBox ID="EnglishName" runat="server"></ext:TextBox>
</Editor>

</ext:RenderField>
<ext:RenderField DataField="Attribute" ColumnID="Attribute" HeaderText="绑定字段">

<Editor>
<ext:DropDownList runat="server" ID="DDlAttribute" DataTextField="ColName" DataValueField="ColName" />
</Editor>
</ext:RenderField>

<ext:RenderField DataField="FieldType" ColumnID="FieldType" HeaderText="字段类型">
<Editor>
<ext:DropDownList runat="server" ID="FieldType">
<ext:ListItem Text="文本框" Value="文本框" />
<ext:ListItem Text="下拉列表" Value="下拉列表" />
<ext:ListItem Text="标签" Value="标签" />
<ext:ListItem Text="固定表格" Value="固定表格" />
<ext:ListItem Text="数字框" Value="数字框" />
<ext:ListItem Text="日期框" Value="日期框" />
<ext:ListItem Text="单选列表" Value="单选列表" />
<ext:ListItem Text="多选列表" Value="多选列表" />
<ext:ListItem Text="超文本" Value="超文本" />
<ext:ListItem Text="图片" Value="图片" />
</ext:DropDownList>
</Editor>
</ext:RenderField>

<ext:RenderField DataField="Rindex" ColumnID="Rindex" HeaderText="行号">
<Editor>
<ext:NumberBox NoDecimal="true" NoNegative="true" runat="server" ID="Rindex" />
</Editor>
</ext:RenderField>

<ext:RenderField DataField="Cindex" ColumnID="Cindex" HeaderText="列号" >
<Editor>
<ext:NumberBox NoDecimal="true" NoNegative="true" runat="server" ID="Cindex" />
</Editor>
</ext:RenderField>
<ext:LinkButtonField Width="50" HeaderText="保存" ConfirmTarget="Top" CommandName="Save" IconUrl="~/res/icon/system_save.gif" ColumnID="Save" Hidden="true" />
<ext:LinkButtonField Width="50" HeaderText="编辑" ConfirmTarget="Top" CommandName="Edit" IconUrl="~/res/icon/bullet_edit.png" ColumnID="Edit" Hidden="true" />
<ext:LinkButtonField Width="50" HeaderText="删除" ConfirmTarget="Top" CommandName="Delete" IconUrl="~/res/icon/bullet_cross.png" ColumnID="Delete"
ConfirmText = "您确定要删除本项目组信息吗?删除后将不可恢复!" />
</Columns>

</ext:Grid>

/// <summary>
/// 表格编辑后事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_AfterEdit(object sender, GridAfterEditEventArgs e)
{
// 数据绑定时,会清空选中的行和选中的单元格
string[] scs = Grid1.SelectedCell;
Save();
//BindGrid();
// ReSelected(scs);

}

/// <summary>
/// 保存数据
/// </summary>
private void Save()
{
//修改的数据
Dictionary<int, Dictionary<string, object>> modifiedDict = Grid1.GetModifiedDict();

foreach (int rowIndex in modifiedDict.Keys)
{
string ID = Grid1.DataKeys[rowIndex][0].ToString();
Dictionary<string, object> rowDict = modifiedDict[rowIndex];
UpdateDataRow(rowDict, ID);

}

/// <summary>
/// 修改数据库中的行
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="rowDict">字典</param>
/// <param name="ID">ID</param>
/// <returns></returns>
private void UpdateDataRow(Dictionary<string, object> rowDict, string ID)
{


foreach (KeyValuePair<string, object> kvp in rowDict)
{
  int x;
  string v;

  try
  {
    x = int.Parse(kvp.Value.ToString());
    v = x.ToString();
  }
  catch
  {
    try
    {

      v = "'" + kvp.Value.ToString() + "'";
    }
    catch
    {
      v = "";
    }
  }

  XElement xp = new XElement("root",
  new XElement("Type", "ExecSql")
  , new XElement("Sql", "Update tb_Report_Template set " + kvp.Key + " = " + v + " where AID= " + ID));
  Govaze.SQLServerDAL.Factory.getDataXmlDAL().ExecProc(xp.ToString(), "DataXmlRec");

  Grid1.UpdateTemplateFields();
}

}


////新增的数据
//List<Dictionary<string, object>> NewAddDict = Grid1.GetNewAddedList();

//for (int i = 0; i < NewAddDict.Count; i++)
//{
// Dictionary<string, object> rowDict = NewAddDict[i];
// AddDataRow(rowDict);
//}

}

原文地址:https://www.cnblogs.com/sanshengshitouhua/p/14353279.html