资源文件的配置,暂不支持编辑,如果要编辑直接删除后新增就可以了。

1.添加资源文件strings.zh-cn.resx和strings.en-us.resx
也可以参考
资源文件配置和使用
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="ResMimeType">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="Version">
<value>1.0.0.0</value>
</resheader>
<resheader name="Reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="Writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="LoginName">
<value>用户名</value>
</data>
<data name="Password">
<value>密码</value>
</data>
</root> 2.html代码
<HTML>
<HEAD>
<title>XMLGrid</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">

<script language=javascript>
function test(obj)

{
var id = obj.id;
var objs;
if(id!="")

{
var len = id.length;
var objs = obj.children;
}
document.getElementById("<%=TextBox1.ClientID%>").innerText=objs[1].innerText;
document.getElementById("<%=TextBox2.ClientID%>").innerText=objs[2].innerText;
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<TABLE id="Table1" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" cellSpacing="1"
cellPadding="1" width="300" border="1">
<tr>
<td colspan="2">资源文件配置</td>
</tr>
<tr>
<td>Language</td>
<td><asp:dropdownlist id="DropDownList1" runat="server" AutoPostBack="True">
<asp:ListItem Value="zh-cn">中文</asp:ListItem>
<asp:ListItem Value="en-us">英文</asp:ListItem>
</asp:dropdownlist></td>
</tr>
<TR>
<TD>Name</TD>
<TD><asp:textbox id="TextBox1" runat="server"></asp:textbox></TD>
</TR>
<TR>
<TD>Value</TD>
<TD><asp:textbox id="TextBox2" runat="server"></asp:textbox></TD>
</TR>
<TR>
<TD></TD>
<TD><asp:button id="Button1" runat="server" Text="新增"></asp:button></TD>
</TR>
</TABLE>
<asp:datagrid id="DataGrid1" style="Z-INDEX: 102; LEFT: 8px; POSITION: absolute; TOP: 160px" runat="server"
AutoGenerateColumns="False" DataKeyField="name" BorderColor="#CC9966" BorderWidth="1px" BackColor="White"
CellPadding="4" OnDeleteCommand="Delete" BorderStyle="None">
<FooterStyle ForeColor="#330099" BackColor="#FFFFCC"></FooterStyle>
<SelectedItemStyle Font-Bold="True" ForeColor="#663399" BackColor="#FFCC66"></SelectedItemStyle>
<ItemStyle ForeColor="#330099" BackColor="White"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="#FFFFCC" BackColor="#990000"></HeaderStyle>
<Columns>
<asp:TemplateColumn HeaderText="序号">
<ItemTemplate>

<%
# Container.ItemIndex+1 %>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="name" ReadOnly="True" HeaderText="Name"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="Value">
<ItemTemplate>

<%
# DataBinder.Eval(Container.DataItem,"value") %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID=txtvalue Runat=server Text='<%# DataBinder.Eval(Container.DataItem,"value") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:ButtonColumn Text="删除" ButtonType="PushButton" HeaderText="删除" CommandName="Delete"></asp:ButtonColumn>
</Columns>
</asp:datagrid>
</form>
</body>
</HTML> 3. cs代码
public class WebForm1 : System.Web.UI.Page

{
private XmlNode node=null;
protected System.Web.UI.WebControls.DropDownList DropDownList1;
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.TextBox TextBox2;
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
private void Page_Load(object sender, System.EventArgs e)

{
if(!Page.IsPostBack)

{
DataBind();
}
}


DataBind#region DataBind
private void DataBind()

{
FileName=Server.MapPath("strings."+this.DropDownList1.SelectedValue+".resx");
DataSet ds=new DataSet();
ds.ReadXml(FileName);
this.DataGrid1.DataSource=ds;
this.DataGrid1.DataBind();
}
#endregion


SetValue#region SetValue
public void SetValue(string key, string Value)

{
XmlDocument doc = new XmlDocument();
doc.Load(FileName);
node = doc.SelectSingleNode("//root");
if( node!= null )

{
XmlElement addElem= (XmlElement)node.SelectSingleNode("//data[@name='" +key +"']") ;
if(addElem!=null)

{
AlertError("该元素已经存在了。");
}
else

{
XmlElement first = doc.CreateElement("data");
first.SetAttribute("name",key);
node.AppendChild(first);

XmlElement second = doc.CreateElement("value");
second.InnerText=Value;
first.AppendChild(second);
saveDoc(doc,FileName);
}
}
}
#endregion


saveDoc#region saveDoc
private void saveDoc(XmlDocument doc,string docPath)

{
try

{
XmlTextWriter writer = new XmlTextWriter( docPath , null );
writer.Formatting = Formatting.Indented;
doc.WriteTo( writer );
writer.Flush();
writer.Close();
return;
}
catch

{
throw;
}
}
#endregion


removeElement#region removeElement
public void removeElement(string elementKey)

{
XmlDocument doc = new XmlDocument();
doc.Load(FileName);
node = doc.SelectSingleNode("//root");
if( node != null )

{
node.RemoveChild( node.SelectSingleNode("//data[@name='" +elementKey +"']") );
saveDoc(doc,FileName);
}
}
#endregion


Web Form Designer generated code#region Web Form Designer generated code
override protected void OnInit(EventArgs e)

{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

/**//// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()

{
this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
this.DataGrid1.ItemDataBound+=new DataGridItemEventHandler(DataGrid1_ItemDataBound);
}
#endregion


property#region property
private string FileName

{
get

{
if(ViewState["FileName"]!=null && ViewState["FileName"].ToString()!="")

{
return ViewState["FileName"].ToString();
}
else

{
return "";
}
}
set

{
ViewState["FileName"]=value;
}
}

#endregion


Button1_Click#region Button1_Click
private void Button1_Click(object sender, System.EventArgs e)

{
SetValue(this.TextBox1.Text,this.TextBox2.Text);
DataBind();
}

#endregion


Delete#region Delete
protected void Delete(object sender,DataGridCommandEventArgs e)

{
removeElement(this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString());
DataBind();
}
#endregion


AlertError#region AlertError
private void AlertError(string msg)

{
string script = "<script language='javascript'>";
script +=" alert('" + msg +"');";
script +="</script>";
Page.RegisterClientScriptBlock("Alert", script);
}
#endregion


DropDownList1_SelectedIndexChanged#region DropDownList1_SelectedIndexChanged
private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)

{
DataBind();
}
#endregion


DataGrid1_ItemDataBound#region DataGrid1_ItemDataBound
private void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)

{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

{
e.Item.Attributes.Add("onclick","test(this);");
e.Item.ID = "ItemID";
}
}
#endregion
}