c# GridVeiw1_DataBound

本文介绍如何在ASP.NET中使用GridView控件,并通过DataBound事件来自定义表头及数据行的样式,包括更改背景颜色及添加跨列的标题。

protected void GridVeiw1_DataBound(object sender, GridViewRowEventArgs e)
        {


            if (e.Row.RowType == DataControlRowType.Header)
            {
                //for (int i = 0; i < e.Row.Cells.Count; i++) { e.Row.Cells[i].Text = fnames[i]; e.Row.Cells[i].Attributes.Add("nowarp", "nowarp"); }
                TableCellCollection tcHeader = e.Row.Cells;
                tcHeader.Clear();
                //第一行
                tcHeader.Add(new TableHeaderCell());
                tcHeader[0].Attributes.Add("colspan", "9");
                tcHeader[0].Attributes.Add("style", "height:35px;text-align:center;");
                tcHeader[0].Text = this.Title + "</th></tr><tr>";

                //第二行
                tcHeader.Add(new TableHeaderCell());
                tcHeader[1].Text += "编号";
                tcHeader.Add(new TableHeaderCell());
                tcHeader[2].Text += "字段1";
                tcHeader.Add(new TableHeaderCell());
                tcHeader[3].Text += "字段2";
                tcHeader.Add(new TableHeaderCell());
                tcHeader[4].Text += "字段3";
                tcHeader.Add(new TableHeaderCell());
                tcHeader[5].Text += "字段4";
                tcHeader.Add(new TableHeaderCell());
                tcHeader[6].Text += "字段5";
                tcHeader.Add(new TableHeaderCell());
                tcHeader[7].Text += "字段6";
                tcHeader.Add(new TableHeaderCell());
                tcHeader[8].Text += "字段7";
                tcHeader.Add(new TableHeaderCell());
                tcHeader[9].Text += "字段8</th></tr><tr>";

            }

            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                //当鼠标停留时更改背景色
                e.Row.Attributes.Add("onmouseover", "c=this.style.backgroundColor;this.style.backgroundColor='#EDF1D5'");
                //当鼠标移开时还原背景色
                e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#FFFFFF'");
                //鼠标点击行时设置底色

                //e.Row.Attributes.Add("onclick", "this.style.backgroundColor='#99cc00'; this.style.color='buttontext';this.style.cursor='default';");
                e.Row.Cells[0].Text = (e.Row.RowIndex + this.GridView1.PageIndex * this.GridView1.PageSize + 1).ToString();

                //3
                //e.Row.Cells[3].Text = e.Row.Cells[3].Text.Trim() == "1" ? "男" : "女";
                //e.Row.Cells[12].Text = e.Row.Cells[12].Text.Trim() == "1" ? "男" : "女";
                //e.Row.Cells[10].Text = e.Row.Cells[10].Text.Trim() == "1" ? "男" : "女";
            }
        }

### ### 在 jQuery 或相关框架中处理控件绑定数据后的操作或事件 在处理控件绑定数据后的操作时,通常需要在数据绑定完成后执行某些自定义逻辑。这可以通过监听并处理 `dataBound` 事件来实现。`dataBound` 事件通常在数据绑定完成后触发,允许开发者在绑定完成后执行额外的操作,例如更新 UI、绑定事件或修改 DOM 元素的状态。 在 jQuery 中,虽然原生的 `.val()` 方法可以直接设置表单控件的值,但在涉及更复杂的控件(如 Kendo UI 等 UI 框架)时,通常会使用 `dataBound` 事件来确保数据绑定完成后再执行相关操作。例如,在 Kendo UI 的 Grid 控件中,可以通过监听 `dataBound` 事件来更新表格行的状态或绑定额外的事件处理程序。 以下是一个使用 Kendo UI 的示例,展示了如何在 `dataBound` 事件中执行操作: ```javascript $("#grid").kendoGrid({ columns: [ { field: "name" }, { field: "age" } ], dataSource: [ { name: "Jane Doe", age: 30 }, { name: "John Doe", age: 33 } ], dataBound: function(e) { // 在数据绑定完成后执行的操作 console.log("Data binding completed"); // 例如,为每一行添加点击事件 $("#grid tr").on("click", function() { console.log("Row clicked"); }); } }); ``` 在该示例中,`dataBound` 事件被用于在数据绑定完成后为表格的每一行添加点击事件。这种方式确保了 DOM 元素已经正确渲染,从而可以安全地绑定事件或修改元素状态。 如果需要手动触发 `dataBound` 事件,例如在数据源更新后重新绑定数据,可以通过调用 `fetch()` 或 `read()` 方法来实现: ```javascript var grid = $("#grid").data("kendoGrid"); grid.bind("dataBound", function(e) { console.log("Manual data binding completed"); }); grid.dataSource.fetch(); ``` 此外,在某些情况下,可能需要取消绑定特定的事件处理程序。可以通过调用 `unbind` 方法并传入事件名称和处理函数的引用,以确保仅取消绑定特定的事件处理程序: ```javascript var handler = function(e) { console.log(e); }; $("#animal").kendoAutoComplete({ dataSource: ["Ant", "Antilope", "Badger", "Beaver", "Bird"] }); var autoComplete = $("#animal").data("kendoAutoComplete"); autoComplete.bind("open", handler); $("#unbindButton").on("click", function() { autoComplete.unbind("open", handler); }); ``` 在数据绑定完成后,还可以通过 `dataBinding` 事件来阻止数据绑定操作。例如,调用 `e.preventDefault()` 可以阻止数据绑定操作继续执行,并防止 `dataBound` 事件被触发: ```javascript dataBinding: function(e) { if (someCondition) { e.preventDefault(); // 阻止数据绑定操作 } } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值