62,046
社区成员
发帖
与我相关
我的任务
分享
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
GridView1.DataSource = this.GetDataTable();
GridView1.DataBind();
}
}
public DataTable GetDataTable()
{
DataTable dt = new DataTable();
DataColumn dc1 = new DataColumn("列1", typeof(string));
DataColumn dc2 = new DataColumn("列2", typeof(int));
DataColumn dc3 = new DataColumn("列3", typeof(int));
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc3);
dt.Rows.Add("三分厂", 44, null);
dt.Rows.Add("二分厂", 60, null);
dt.Rows.Add("三分厂", null, 80);
dt.Rows.Add("二分厂", null, 90);
dt.Rows.Add("一分厂", null, 80);
dt.Rows.Add("二分厂", null, 90);
dt.Rows.Add("一分厂", 20, 30);
dt.Rows.Add("一分厂", 20, null);
dt.Rows.Add("四分厂", 120, null);
return dt;
}
/// <summary>
/// 处理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button1_Click(object sender, EventArgs e)
{
DataTable dt = this.GetDataTable();
DataTable newDt = dt.Clone();
List<string> nameList = new List<string>();
foreach (DataRow row in dt.Rows)
{
if (!nameList.Contains(row[0].ToString()))
{
nameList.Add(row[0].ToString());
DataRow newRow = newDt.NewRow();
newRow["列1"] = row[0].ToString();
newRow["列2"] = 0;
newRow["列3"] = 0;
newDt.Rows.Add(newRow);
}
}
foreach (DataRow newRow in newDt.Rows)
{
foreach (DataRow row in dt.Rows)
{
if (row["列1"].ToString() == newRow["列1"].ToString())
{
if (row["列2"] == DBNull.Value)
row["列2"] = 0;
if (row["列3"] == DBNull.Value)
row["列3"] = 0;
newRow["列2"] = Convert.ToInt32(newRow["列2"]) + Convert.ToInt32(row["列2"]);
newRow["列3"] = Convert.ToInt32(newRow["列3"]) + Convert.ToInt32(row["列3"]);
}
}
}
GridView1.DataSource = newDt;
GridView1.DataBind();
}
var data1 = new DataTable();
data1.Columns.Add("Col1");
data1.Columns.Add("Col2");
data1.Columns.Add("Col3");
data1.Rows.Add(new object[] { "三分厂", "44", "" });
data1.Rows.Add(new object[] { "二分厂", "60", "" });
data1.Rows.Add(new object[] { "三分厂", "", "80" });
data1.Rows.Add(new object[] { "二分厂", "", "90" });
var query = from row in data1.AsEnumerable()
group row by row.Field<string>(0)
into g
select new
{
key = g.Key,
col1 = string.Join(",", g.Where(t => t.Field<string>(1) != "").Select(t => t.Field<string>(1))),
col2 = string.Join(",", g.Where(t => t.Field<string>(2) != "").Select(t => t.Field<string>(2))),
};
foreach (var r in query)
Console.WriteLine(r);
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
public partial class _Default : System.Web.UI.Page
{
private DataTable dt;
protected void Page_Load(object sender, EventArgs e)
{
dt = DbData.CreateNewTable("列1", "System.String", "列2", "System.String", "列3", "System.String");
dt.Rows.Add("三分厂", "44", null);
dt.Rows.Add("二分厂", "60", null);
dt.Rows.Add("三分厂", null, "80");
dt.Rows.Add("二分厂", null, "90");
GridView1.DataSource = dt;
GridView1.DataBind();
}
protected void Button1_Click(object sender, EventArgs e)
{
DataTable resultDT = dt.Clone();
for (int i = 0; i < dt.Rows.Count; i++)
{
bool flag = false;
for (int j = 0; j < resultDT.Rows.Count; j++)
{
if (dt.Rows[i][0].ToString() == resultDT.Rows[j][0].ToString())
{
if (resultDT.Rows[j][1].ToString() == "")
resultDT.Rows[j][1] = dt.Rows[i][1].ToString();
if (resultDT.Rows[j][2].ToString() == "")
resultDT.Rows[j][2] = dt.Rows[i][2].ToString();
flag = true;
}
}
if (!flag)
resultDT.Rows.Add(dt.Rows[i][0], dt.Rows[i][1], dt.Rows[i][2]);
}
GridView1.DataSource = resultDT;
GridView1.DataBind();
}
}