前台代码:
function newDate(jhId) {
$.post('../../ashx/operation/baogonglist.ashx?action=listsql', { jh: jhId },
function (data) {
alert(data.columns);
grid.datagrid({
columns: [data.columns]
}).datagrid("loadData", data);
},"json");
}
$(function () {
var kinds = request("id");
alert("df");
grid = $("#td").datagrid({
fit: true,
columns: [[]],
toolbar: [{
text: "",
iconCls: 'icon-add',
handler: newDate(kinds)
}]
})
})
function test(value, row, index) {
alert("df");
//if (index == 2) {
// return ""
//}
}
后台代码:
<pre class="html" name="code"> private void listSqlDs(HttpContext context) {
string jh,l_jsonstr;
plmBLL plm = new plmBLL();
DataSet ds = new DataSet();
jh = context.Request["jh"];
// ds = plmM.getSqlDs(jh);
DataTable tab = new DataTable();
DataTable tab2 = new DataTable();
ds = plm.getSqlDs(jh);
tab2 = createTable();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
tab.Columns.Add("unitName" + i + "");
DataRow dr = tab2.NewRow();
dr["field"] = "unitName" + i; ;
dr["title"] = ds.Tables[0].Rows[i]["unitName"];
dr["align"] = "center";
dr["width"] = 100;
//formatter列
<span style="color:#ff6666;"></span>
dr["formatter"] = "test";
tab2.Rows.Add(dr);
}
for (int i = 1; i < ds.Tables[0].Columns.Count; i++)
{
DataRow dr = tab.NewRow();
for (int j = 0; j < ds.Tables[0].Rows.Count; j++)
{
dr["unitName" + j + ""] = ds.Tables[0].Rows[j][i];
}
tab.Rows.Add(dr);
}
ds.Tables.Add(tab);
Hashtable ht = new Hashtable();
ht.Add("total", tab.Rows.Count);
ht.Add("columns", tab2);
ht.Add("rows", tab);
l_jsonstr = JsonConvert.SerializeObject(ht);
context.Response.Clear();
context.Response.Write(l_jsonstr);
context.Response.End();
}
public DataTable createTable()
{
DataTable dt = new DataTable("myTable");
//field列
DataColumn columnField = new DataColumn();//创建一列
columnField.DataType = System.Type.GetType("System.String");//数据类型
columnField.ColumnName = "field";//列名
dt.Columns.Add(columnField);//添加到table
//title列
DataColumn columnTitle = new DataColumn();
columnTitle.DataType = System.Type.GetType("System.String");
columnTitle.ColumnName = "title";
dt.Columns.Add(columnTitle);
//align列
DataColumn columnAlign = new DataColumn();
columnAlign.DataType = System.Type.GetType("System.String");
columnAlign.ColumnName = "align";
dt.Columns.Add(columnAlign);
//width列
DataColumn columnWidth = new DataColumn();
columnWidth.DataType = System.Type.GetType("System.Int32");
columnWidth.ColumnName = "width";
dt.Columns.Add(columnWidth);
//formatter列:
DataColumn columnformatter = new DataColumn();
columnformatter.DataType = System.Type.GetType("System.String");
columnformatter.ColumnName = "formatter";
dt.Columns.Add(columnformatter);
return dt;
}
没加formatter列时的效果:
<img src="https://img-blog.csdn.net/20140903155935301?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTM2MzA5NnM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
加了formatter列时的效果:
<img src="https://img-blog.csdn.net/20140903160041773?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTM2MzA5NnM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
问题:加了formatter后下面的行显示不出来了,我想为第三行加一个按钮。
我的猜想,生成出来的json数据吧formatter后面的参数当做了一个字符串显示,而我在后台处理之后把生成出来的formatter后面参数的双引号去掉后也不能实现,有没有大神能解决。或者有没有更好的easyui datagrid动态生成列的方法.
先谢谢大家的解答: