首页 新闻 搜索 专区 学院

(立即结贴)关于GridView的RowDataBound操作问题

0
悬赏园豆:15 [已解决问题] 解决于 2010-08-26 15:48
//我想拿出对某一个字段值,处理后再显示出来.(功能已实现,有一个地方处理的不优雅)
protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string id = (string)DataBinder.GetPropertyValue(e.Row.DataItem, "CourseId");
Literal lt
= new Literal();
lt.Text
= sb.ToString();
//在这里,我用e.Row.Cells[1]这样有一个问题,就是前面gridview如再列有增删,这里代码就得改动.
//有没有一种方式,可以通过绑定的字段植来判断所在的单元格的?或是其它方法.
e.Row.Cells[1].Controls.Add(lt);
}
}

 

蝗虫的大腿的主页 蝗虫的大腿 | 初学一级 | 园豆:22
提问于:2010-08-25 10:59
< >
分享
最佳答案
0

看的你代码的意思是想增加一个控件来保存每一行的 CourseId, 这种操作可以在标记页面来做啊。每次都动态添加、效率不高,

像下面一样:
        <asp:GridView ID="GridView1" runat="server">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:Label ID="lblID" runat="server" Text='<%# Eval("CourseId")%>' />
                        <asp:TextBox ID="txt" runat="server" Text='<%# Eval("CourseName")%>' />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

CS 页面:只要查找这个 lblID 控件、获取值就可以了。

Label lbl=e.FindControl("lblID") as Label;

 

这样也省下了手动 设置值的问题。

 

 

 


收获园豆:15
HUHU慈悲 | 大侠五级 |园豆:9973 | 2010-08-25 12:55
你说的这个也算是一种方法吧.效率上,我觉得也不好说,哪个高哪个低吧.我不认为findControl 会比直接添加低.其实我更想知道的是, (string)DataBinder.GetPropertyValue(e.Row.DataItem, "CourseId"); 这句话是取字段对应的值, 我想知道,我把取出来的对应字段的这个字符串,处理完成后,再怎么赋值给原来的呢? 因为,我在做服务器控件的时候,做一个动态产生多选框列,那个列里的checkbox是通过 e.Row.Cells[1].Controls.Add(lt);添加的.这个就有上面我说的问题.所以我想在不在前台添加模板列的情况下.做这个功能.
蝗虫的大腿 | 园豆:22 (初学一级) | 2010-08-25 13:25
其他回答(1)
0

多选框列?不是很明白,楼上这个解决方案挺好的啊。你甚至不用绑定到某个字段值,而是绑定到某个方法

<ItemTemplate>

<input type=checkbox value='<%#GetCheckValue(Eval("CourseId"))%>'>

</ItemTemplate>

明年我18 | 园豆:240 (菜鸟二级) | 2010-08-26 00:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册