从万恶的DataGridView中取值

时间:2022-02-20 16:28:33
老板喜欢Execl可我做的System用的都是.NET做的C# Winfrom(不是Web)表格用的DataGridView,现在总算是把2者结合了。可遇到了问题。老板大人发话了:我要点击你的DataGridView后输出到Execl中.他说的容易.我做的难啊。我总结了1天老出错。请同仁中的高手指点晚辈一二。要求:点击DataGridView中的某一单元格得到该条记录的ID(也就是数据库的主键,自增加)。该单元不知道是哪个单元格所以 Where条件没办法写。数据表的数据老是被删。所以ID都不是连续的。请高手指点指点。我怎么弄啊?最后给小弟点代码。谢谢

37 个解决方案

#1


怎么没人来啊

#2


增加一列,保存主键值,你不就很容易读出了吗

#3


不许+,数据区+的东西都是要他看的懂,看了不知道是什么的不许+在里面。老板大大大人的话

#4


有datakey之类的属性吗?根据RowIndex获取datakey[即主键值]不就OK了吗

#5


什么意思啊?输出一条数据还要用Execl?是整个dgv导出来吧?没明白呢~~~~

#6


给她做一个可以导出excel的就行了。
后面那个问题也能处理 点的哪一些怎么会不 知道呢?
那在header里加按钮也能实现。

#7


就是老板喜欢上了我的DataGridView只是他还要保留它的Execl.为了显示他的无敌.他想出了查看单条数据。于是就想出了。点其中随便地方。就要显示他点的整条数据。至于导入Execl网上很多。

#8


脑子卡住了啊。就是想不出来了

#9


用CommandArgument='<%# Eval("Id") %>'

#10


为什么不写一个子窗体查看呢?

#11


该回复于2011-08-08 15:47:32被版主删除

#12


 #region NewsList_ItemDataBound
    protected void NewsList_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        //ListItemType objItemType = e.Item.ItemType;

        //if (objItemType == ListItemType.Item || objItemType == ListItemType.AlternatingItem)
        //{
        //    DataRowView drvData = (DataRowView)e.Item.DataItem;
        //    HyperLink hlTitle = (HyperLink)e.Item.FindControl("hlTitle");
        //    //hlTitle.Text = "<a href='http://www.topfo.com/" + drvData["Htmlurl"].ToString() + "' target=\"_blank\">" + Tz888.Common.Utility.PageValidate.FixLenth(drvData["Titel"].ToString(), 37, "...") + "</a>";
        //    hlTitle.ToolTip = drvData["Titel"].ToString();
        //}
    }
    #endregion

#13


大家,我的脑子开始晕了...算了。我已经没办法思考了.那请告诉我下,点某单元,得到它的行号吧。我还是把ID放到DataGridView内吧。至于别的。我想其它办法。打不了骗骗他好了

#14


能把dgv的选择属性该为整行选取,这样无论点该行的哪个单元格都能的到该行记录的属性

#15


引用 2 楼 bdmh 的回复:
增加一列,保存主键值,你不就很容易读出了吗


把这一列隐藏就OK了。

#16


引用 3 楼 liaoan_sun 的回复:
不许+,数据区+的东西都是要他看的懂,看了不知道是什么的不许+在里面。老板大大大人的话


把这一列隐藏就OK了。上一条引用错了。。

#17


引用 3 楼 liaoan_sun 的回复:
不许+,数据区+的东西都是要他看的懂,看了不知道是什么的不许+在里面。老板大大大人的话


不准显示ID,
你在dataGridView里“编辑列”。把ID的visible设置成 false 就OK了,

id =int.Parse(dataGridView1.CurrentRow.Cells["id"].Value.ToString());
这样,就能取得主键ID了,再做什么,不需要我再说了吧

#18


给她做一个可以导出excel的就行了。
后面那个问题也能处理 点的哪一些怎么会不 知道呢?
那在header里加按钮也能实现。

#19


本帖最后由 liuli_ping 于 2011-08-10 15:58:01 编辑
主键都显示到在datagridview中了ID=this.dataGridView.Rows[e.RowIndex].Cells[ID列的序号].Value.ToString();

#20


楼上你说的是错的。数据是会被删的ID不可能是连接的。你的数据库没学好。别来吹,知道吗?

#21


对楼主真是无语,你的想法就是选择哪行时,获取那一行ID列的值,你是从datagridview中取值,又不是从数据库中取值,与ID在数据库中不是连续的没有一毛钱的关系

#22


我看你还是将老板换了吧!别费哪个神了!

#23


本帖最后由 liuli_ping 于 2011-08-12 10:45:17 编辑
楼上也有人说了,你不想显示ID一列,可以在datagridview中隐藏掉,如果你ID都不绑定datagridview,
又想从datagridview中取ID的值

#24


老板在玩你呢.别傻了.

#25


dgv[ID序号, dgv.CurrentCell.RowIndex].Value这样就能取到了

#26


ID都是不连续的导出有何用,还是就显示当前单元格是第多少条记录就行了。。。。
老板他知道你是DATAGRIDVIEW的记录还是数据库ID值吗?呵呵

#27


都没分了。怎么还有人跑进来?没事的来看看就好,发那么多话。还没分得,你们不累啊?

#28


加id列,然后这一列给隐藏起来不显示即可。。

#29


看来LZ相当年轻,绑定上数据库主键值,并隐藏就可以解决此类问题。无论是从数据库还是窗体控件中取值。
导出excel也是可以有选择的导出那些列的数据。
如果LZ能在需求数据与显示数据方面纠结的话,那只能说明你不太适合当程序员。
用户永远只会知道显示数据,至于显示数据后面的实际需求数据,那是给系统用的,与用户无关。

#30


去看看 Cell单元格的tag属性。

#31


只是点击哪一行出Excel中?

#32


你是谭楚张?

#33


刚找了点资料,不知道合要求否  
传说这个控件有用 FARPOINT 
可以试试

#34


http://topic.csdn.net/u/20100609/13/4d9006e4-529e-4b30-91ae-9908f5806c58.html
这里边找了点资料  希望能帮到楼主

#35


用LIST绑定GRID,就很容易获取他的ID号了

#36


谢谢,你们别来了好吗?

#37


上首页了,不来不舒服斯基

#1


怎么没人来啊

#2


增加一列,保存主键值,你不就很容易读出了吗

#3


不许+,数据区+的东西都是要他看的懂,看了不知道是什么的不许+在里面。老板大大大人的话

#4


有datakey之类的属性吗?根据RowIndex获取datakey[即主键值]不就OK了吗

#5


什么意思啊?输出一条数据还要用Execl?是整个dgv导出来吧?没明白呢~~~~

#6


给她做一个可以导出excel的就行了。
后面那个问题也能处理 点的哪一些怎么会不 知道呢?
那在header里加按钮也能实现。

#7


就是老板喜欢上了我的DataGridView只是他还要保留它的Execl.为了显示他的无敌.他想出了查看单条数据。于是就想出了。点其中随便地方。就要显示他点的整条数据。至于导入Execl网上很多。

#8


脑子卡住了啊。就是想不出来了

#9


用CommandArgument='<%# Eval("Id") %>'

#10


为什么不写一个子窗体查看呢?

#11


该回复于2011-08-08 15:47:32被版主删除

#12


 #region NewsList_ItemDataBound
    protected void NewsList_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        //ListItemType objItemType = e.Item.ItemType;

        //if (objItemType == ListItemType.Item || objItemType == ListItemType.AlternatingItem)
        //{
        //    DataRowView drvData = (DataRowView)e.Item.DataItem;
        //    HyperLink hlTitle = (HyperLink)e.Item.FindControl("hlTitle");
        //    //hlTitle.Text = "<a href='http://www.topfo.com/" + drvData["Htmlurl"].ToString() + "' target=\"_blank\">" + Tz888.Common.Utility.PageValidate.FixLenth(drvData["Titel"].ToString(), 37, "...") + "</a>";
        //    hlTitle.ToolTip = drvData["Titel"].ToString();
        //}
    }
    #endregion

#13


大家,我的脑子开始晕了...算了。我已经没办法思考了.那请告诉我下,点某单元,得到它的行号吧。我还是把ID放到DataGridView内吧。至于别的。我想其它办法。打不了骗骗他好了

#14


能把dgv的选择属性该为整行选取,这样无论点该行的哪个单元格都能的到该行记录的属性

#15


引用 2 楼 bdmh 的回复:
增加一列,保存主键值,你不就很容易读出了吗


把这一列隐藏就OK了。

#16


引用 3 楼 liaoan_sun 的回复:
不许+,数据区+的东西都是要他看的懂,看了不知道是什么的不许+在里面。老板大大大人的话


把这一列隐藏就OK了。上一条引用错了。。

#17


引用 3 楼 liaoan_sun 的回复:
不许+,数据区+的东西都是要他看的懂,看了不知道是什么的不许+在里面。老板大大大人的话


不准显示ID,
你在dataGridView里“编辑列”。把ID的visible设置成 false 就OK了,

id =int.Parse(dataGridView1.CurrentRow.Cells["id"].Value.ToString());
这样,就能取得主键ID了,再做什么,不需要我再说了吧

#18


给她做一个可以导出excel的就行了。
后面那个问题也能处理 点的哪一些怎么会不 知道呢?
那在header里加按钮也能实现。

#19


本帖最后由 liuli_ping 于 2011-08-10 15:58:01 编辑
主键都显示到在datagridview中了ID=this.dataGridView.Rows[e.RowIndex].Cells[ID列的序号].Value.ToString();

#20


楼上你说的是错的。数据是会被删的ID不可能是连接的。你的数据库没学好。别来吹,知道吗?

#21


对楼主真是无语,你的想法就是选择哪行时,获取那一行ID列的值,你是从datagridview中取值,又不是从数据库中取值,与ID在数据库中不是连续的没有一毛钱的关系

#22


我看你还是将老板换了吧!别费哪个神了!

#23


本帖最后由 liuli_ping 于 2011-08-12 10:45:17 编辑
楼上也有人说了,你不想显示ID一列,可以在datagridview中隐藏掉,如果你ID都不绑定datagridview,
又想从datagridview中取ID的值

#24


老板在玩你呢.别傻了.

#25


dgv[ID序号, dgv.CurrentCell.RowIndex].Value这样就能取到了

#26


ID都是不连续的导出有何用,还是就显示当前单元格是第多少条记录就行了。。。。
老板他知道你是DATAGRIDVIEW的记录还是数据库ID值吗?呵呵

#27


都没分了。怎么还有人跑进来?没事的来看看就好,发那么多话。还没分得,你们不累啊?

#28


加id列,然后这一列给隐藏起来不显示即可。。

#29


看来LZ相当年轻,绑定上数据库主键值,并隐藏就可以解决此类问题。无论是从数据库还是窗体控件中取值。
导出excel也是可以有选择的导出那些列的数据。
如果LZ能在需求数据与显示数据方面纠结的话,那只能说明你不太适合当程序员。
用户永远只会知道显示数据,至于显示数据后面的实际需求数据,那是给系统用的,与用户无关。

#30


去看看 Cell单元格的tag属性。

#31


只是点击哪一行出Excel中?

#32


你是谭楚张?

#33


刚找了点资料,不知道合要求否  
传说这个控件有用 FARPOINT 
可以试试

#34


http://topic.csdn.net/u/20100609/13/4d9006e4-529e-4b30-91ae-9908f5806c58.html
这里边找了点资料  希望能帮到楼主

#35


用LIST绑定GRID,就很容易获取他的ID号了

#36


谢谢,你们别来了好吗?

#37


上首页了,不来不舒服斯基