FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 7417|回复: 12
打印 上一主题 下一主题

关于Gride的OnRowDataBound事件

[复制链接]
跳转到指定楼层
楼主
发表于 2013-12-18 17:03:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
当第一次数据绑定时,可以正常的显示农田和农药的名称,但是当年度和连队的下拉列表改变后,重新绑定农田时,农田名称就不能正确显示。农田的绑定是随着连队的改变而改变,而农药的绑定是固定的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
沙发
发表于 2013-12-19 17:06:32 | 只看该作者
那条件改变数据改变没出问题吧,会不会是你查询错了呢。或者没有数据,使得它为空啊
板凳
 楼主| 发表于 2013-12-19 18:04:13 | 只看该作者
沉寂 发表于 2013-12-19 17:06
那条件改变数据改变没出问题吧,会不会是你查询错了呢。或者没有数据,使得它为空啊 ...

没有,重新绑定后的数据debug看是正确的,就是显示不出来。
地板
发表于 2013-12-20 09:20:03 | 只看该作者
袭月 发表于 2013-12-19 18:04
没有,重新绑定后的数据debug看是正确的,就是显示不出来。

你可以把这事件里的代码贴出来吗
5#
 楼主| 发表于 2013-12-20 11:34:59 | 只看该作者
沉寂 发表于 2013-12-20 09:20
你可以把这事件里的代码贴出来吗

行绑定代码
protected void Grid1_RowDataBound(object sender, FineUI.GridRowEventArgs e)
        {
            ntxx_BLL nt_bll = new ntxx_BLL();
            int ldid = Convert.ToInt32(ldDPList.SelectedValue);
            DataTable nt_table = nt_bll.Query_By_Ld(ldid).Tables[0];
            ntDPList.DataSource = nt_table;
            ntDPList.DataTextField = "ntmc";
            ntDPList.DataValueField = "ntID";
            ntDPList.DataBind();
        }
//年度下拉列表改变事件
        protected void yearDPList_SelectedIndexChanged(object sender, EventArgs e)
        {
            BindGrid1();
        }

        //连队下拉列表改变事件
        protected void ldDPList_SelectedIndexChanged(object sender, EventArgs e)
        {
            BindGrid1();
            ntxx_BLL nt_bll = new ntxx_BLL();
            int ldid = Convert.ToInt32(ldDPList.SelectedValue);
            DataTable nt_table = nt_bll.Query_By_Ld(ldid).Tables[0];
            ntDPList.DataSource = nt_table;
            ntDPList.DataTextField = "ntmc";
            ntDPList.DataValueField = "ntID";
            ntDPList.DataBind();
        }
每次下拉列表如果先选择连队,再选择年度,就可以正常显示,若先选择年度,在选择连队,则农田名称不能显示。
6#
发表于 2013-12-20 14:20:22 | 只看该作者
袭月 发表于 2013-12-20 11:34
行绑定代码
protected void Grid1_RowDataBound(object sender, FineUI.GridRowEventArgs e)
        {

我想说的是你这代码好多重复啊,根本就不需要rowdatabound啊,你直接绑定表格不就行了啊,RowDataBound是行绑定,就是绑定表格中某行某列的值(需特许处理的)用的比较好,不然就直接表格绑定了。你这里不知道重复绑定了多少次,它得到的是最后一次绑定的结果吧
7#
发表于 2013-12-20 14:30:17 | 只看该作者
  /// <summary>
        /// 查询符串条件
        /// </summary>
        private string SearchString
        {
            get
            {
                StringBuilder sb = new StringBuilder();
                string sortField = this.gridReexamScoreEntry.SortField;
                string sortDirection = gridReexamScoreEntry.SortDirection;
                sb.Append(" 1=1");
                 if(ldDPList.SelectVaule!="未选择")
                {
                       sb.Append(string.Format(" AND 字段='{0}'", this.ldDPList.SelectedValue));
                }
                                if (string.IsNullOrEmpty(sortField))
                {
                   sortField = "AdjustNo";
                  sortDirection = "asc";
                }
                //sb.Append(string.Format(" order by {0} {1} ", sortField, sortDirection));
                return sb.ToString();
            }
        }
//绑定表格
private void BindGrid1()
{
       DataTable nt_table = BLL.GetTableBySqlCondition(SearchString);
         ntDPList.DataSource = nt_table;
          ntDPList.DataBind();
}
//年度下拉列表改变事件
        protected void yearDPList_SelectedIndexChanged(object sender, EventArgs e)
        {
            BindGrid1();
        }

        //连队下拉列表改变事件
        protected void ldDPList_SelectedIndexChanged(object sender, EventArgs e)
        {
            BindGrid1();
        }

8#
 楼主| 发表于 2013-12-23 11:07:10 | 只看该作者
沉寂 发表于 2013-12-20 14:30
///
        /// 查询符串条件
        ///

我试了,当重新绑定的时候还是出不来农田名称……
9#
发表于 2013-12-23 11:41:38 | 只看该作者
袭月 发表于 2013-12-23 11:07
我试了,当重新绑定的时候还是出不来农田名称……

不可能吧,这只是一个很简单的表格绑定啊,怎么出不来数据呢,是不是你的DataField写的不对啊
10#
 楼主| 发表于 2013-12-24 16:19:10 | 只看该作者
沉寂 发表于 2013-12-23 11:41
不可能吧,这只是一个很简单的表格绑定啊,怎么出不来数据呢,是不是你的DataField写的不对啊 ...

<x:RenderField ColumnID="ntID" DataField="ntID" RendererFunction="renderNt" FieldType="Int"
     HeaderText="农田">
         <Editor>
                  <xropDownList ID="ntDPList" runat="server" Required="true"></xropDownList>
         </Editor>
</x:RenderField>


<script type="text/javascript">
        var ntID = '<%= ntDPList.ClientID %>';
        function renderNt(value, metadata, record, rowIndex, colIndex) {
            return X(ntID).x_getTextByValue(value);
        }
</script>并不是每次数据都出不来的,主要是当上面的连队下拉列表改变时,重新绑定数据的时候就显示不出来,我debug看了,ntDPList控件上所绑定的数据是正确的,只是显示不出来……
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-27 08:29 , Processed in 0.048181 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表