首页 新闻 会员 周边

通过按钮的button_Click事件动态添加dataGridView的列和数据时,为何非得点击dataGridView数据才显示出来?

0
悬赏园豆:10 [已解决问题] 解决于 2014-03-06 12:26

看代码:

private void button1_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add(Getcl("卖家名称", response.Trade.BuyerNick));
dt.Columns.Add(Getcl("交易编号", response.Trade.AlipayNo));
dt.Columns.Add(Getcl("商品价格", response.Trade.Price));
dataGridView1.DataSource = dt;
}
public DataColumn Getcl(string clName,string value) {
DataColumn dc = new DataColumn();
dc.ColumnName = clName;
dc.DefaultValue = value;
return dc;
}

运行的时候,当点击按钮时dataGridView中的列是有显示出来,但是数据却不显示出来,非得用鼠标点击dataGridView区域时才加载数据!这是怎么回事???

WP921108的主页 WP921108 | 初学一级 | 园豆:108
提问于:2014-03-06 10:20
< >
分享
最佳答案
0

从你这里给出的代码看,你只是新建了一个 DataTable,添加了列,并没有填充数据的操作。

收获园豆:10
Launcher | 高人七级 |园豆:45045 | 2014-03-06 10:35

有添加数据的

dt.Columns.Add(Getcl("买家名称", response.Trade.BuyerNick));
response.Trade.BuyerNick 就是要填充的数据

 

WP921108 | 园豆:108 (初学一级) | 2014-03-06 11:26

 完整代码这样的

private void button1_Click(object sender, EventArgs e)
{
string url = "http://gw.api.tbsandbox.com/router/rest";
string appkey = "1021746742";
string appsecret = "sandbox1267a12162b4b790be9e1c1c4";
string sessionkey = "61025211f9aa56fd42a9ad34970a91f4a15ad2ab209c60f3629365654";
ITopClient myclient = new DefaultTopClient(url, appkey, appsecret);

//查询交易信息
TradeFullinfoGetRequest rep = new TradeFullinfoGetRequest();
rep.Fields = "alipay_no,commission_fee,buyer_nick,buyer_alipay_no,price,receiver_address,seller_nick,receiver_city";
rep.Tid = 192353760025456;
TradeFullinfoGetResponse response = myclient.Execute(rep, sessionkey);
//数据绑定加载
DataTable dt = new DataTable();
dt.Columns.Add(Getcl("买家名称", response.Trade.BuyerNick));
dt.Columns.Add(Getcl("交易编号", response.Trade.AlipayNo));
dt.Columns.Add(Getcl("商品价格", response.Trade.Price));
dt.Columns.Add(Getcl("收货地址", response.Trade.ReceiverCity+response.Trade.ReceiverAddress));
dt.Columns.Add(Getcl("卖家名称",response.Trade.SellerNick));
dataGridView1.DataSource = dt;
}
public DataColumn Getcl(string clName,string value) {
DataColumn dc = new DataColumn();
dc.ColumnName = clName;
dc.DefaultValue = value;
return dc;
}

WP921108 | 园豆:108 (初学一级) | 2014-03-06 11:29

@WP921108: 你这不叫添加数据,dc.DefaultValue = value,这句表示给该列设置默认值,请看 MSDN 解释:

http://msdn.microsoft.com/zh-cn/library/system.data.datacolumn.defaultvalue(v=vs.110).aspx

 

在创建新行时获取或设置列的默认值。

注意上面这句话,它有个定语——“在创建新行时”,dt.Columns.Add 不叫创建新行,这叫添加新列,注意这里是列,不是行。

创建新行,请使用 dt.Rows.Add 方法。

Launcher | 园豆:45045 (高人七级) | 2014-03-06 11:32

@Launcher: 好像是的 弄好了 谢谢了 看来以后还是要多看文档啊 呵呵

WP921108 | 园豆:108 (初学一级) | 2014-03-06 12:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册