Ghi chú đến thành viên
Go Back   4vn.eu > Kiến thức > Tin học > Lập Trình > .NET
Gởi Ðề Tài Mới Trả lời
 
Ðiều Chỉnh
  #1  
Old 24-10-2012, 01:57 PM
mshang1990a mshang1990a is offline
Nhập Môn Tu Luyện
 
Tham gia: Oct 2012
Đến từ: Thanh xuân - Hà Nội
Bài gởi: 4
Thời gian online: 22 phút 52 giây
Xu: 0
Thanks: 1
Thanked 0 Times in 0 Posts
GridView cột tiêu đề sáp nhập trong ASP.NET

Giới thiệu

ASP.NET GridView kiểm soát dữ liệu là một công cụ rất phong phú cho hiển thị dữ liệu dạng bảng trong các ứng dụng web và cũng có thể nó rất dễ dàng để đạt được một mức độ lớn của tuỳ biến với kiểm soát này. Trong bài viết này, chúng tôi sẽ xem xét làm thế nào để nhập một tiêu đề xem lưới cột và làm nổi bật các tế bào lưới điện cho một ứng dụng bảng chấm công. Có một số cách để đạt được điều này, chúng ta sẽ nhìn thấy một trong số đó. Hy vọng điều này sẽ hữu ích cho những người làm việc với các loại timesheet của các ứng dụng.

Yêu cầu

Chúng tôi có một yêu cầu để tạo ra một trang web ASP.NET để hiển thị tóm tắt chi tiết các bảng chấm công trong định dạng bảng như trong hình 1. Mỗi tiêu đề Tên người lao động nên được chia thành ba cột như In Time, Thời gian và Tình trạng. Lá cá nhân và các tế bào kỳ nghỉ cuối tuần nên được làm nổi bật với màu sắc

Giải pháp

Yêu cầu trên có thể được thực hiện thông qua điều khiển dữ liệu ASP.NET GridView . GridView đối tượng hàng được tạo ra trước khi GridView kiểm soát được kết xuất vào trang. Hầu hết các tế bào hoạt động định dạng có thể đạt được bằng cách bắt các RowDataBound và RowCreated sự kiện.

Sử dụng mã

Hãy tạo một trang mẫu web timesheet để giải thích một giải pháp cho vấn đề này. Để có được điều này đầu tiên, chúng ta phải cư dữ liệu timesheet mẫu sử dụng mã. Vui lòng tải về mã nguồn kèm theo và đi qua các chức năng quản lý lớp dữ liệu để cư trú của nhân viên và dữ liệu các bảng chấm công bằng cách sử dụng các bảng dữ liệu.

Tiếp theo, chúng ta sẽ liên kết dữ liệu các bảng chấm công cho một GridView điều khiển. Trước khi ràng buộc chúng ta nên tùy chỉnh các bảng nguồn dữ liệu như sau bằng cách sử dụng dữ liệu của nhân viên và timesheet. Tham khảo bảng sau và mã.


Bây giờ chúng ta sẽ thấy mã để cư trú trong GridView . Các mã sau đây đọc các dữ liệu nhân viên và timesheet từ các dữ liệu bảng mẫu và tạo ra một bảng timesheet dữ liệu mới như thể hiện trong hình trên.

Trích:
private string _seperator = "|";

protected void btnShow_Click(object sender, EventArgs e)
{
// Reading employee data
DataTable employeeData = DataManager.GetEmployeeData();
// Reading time sheet data for the employee for a data range
DataTable timeSheetData = DataManager.GetTimeSheetData();

// Creating a customized time sheet table for binding with data grid view
var timeSheet = new DataTable("TimeSheet");

timeSheet.Columns.Add("DENTRY" + _seperator + "");

// creating colum header for each employee data
foreach (DataRow item in employeeData.Rows)
{
string columnName = item["EMPLOYEENAME"].ToString().Trim();
timeSheet.Columns.Add(columnName + _seperator + "InTime");
timeSheet.Columns.Add(columnName + _seperator + "OutTime");
timeSheet.Columns.Add(columnName + _seperator + "Status");
}

// setting start date
DateTime currentDate = Convert.ToDateTime("05/21/2012");

//creating 10 days time sheet data for each employee
for (int i = 0; i < 9; i++)
{
var dataRow = timeSheet.NewRow();
FillTimeSheetRow(timeSheetData, employeeData, currentDate, dataRow);
timeSheet.Rows.Add(dataRow);
currentDate = currentDate.AddDays(1);
}

//Binding time sheet table with data grid view
timeSheetGrid.DataSource = timeSheet;
timeSheetGrid.DataBind();
}

private void FillTimeSheetRow(DataTable timeSheetData,
DataTable employees, DateTime currentDate, DataRow dataRow)
{
dataRow["DENTRY" + _seperator +
""] = currentDate.ToString("dd-MMM-yyyy");

foreach (DataRow row in employees.Rows)
{
string columnName = row["EMPLOYEENAME"].ToString().Trim();
string employeeId = (row["EMPLOYEEID"]).ToString().Trim();

var dayStatus = "";
// updating status as holiday for week ends
if (currentDate.DayOfWeek.ToString() == "Saturday" ||
currentDate.DayOfWeek.ToString() == "Sunday")
{
dayStatus = "HDAY";
}

// Fetching time sheet entry for the current data from time sheet data
DataRow[] result = timeSheetData.Select("EMPLOYEEID='" + employeeId +
"' AND DENTRY='" + currentDate.ToShortDateString() + "'");

if (result.Length != 0)
{
string status = result[0]["STATUS"].ToString();
dataRow[columnName + "|InTime"] = result[0]["INTIME"].ToString();
dataRow[columnName + "|OutTime"] = result[0]["OUTTIME"].ToString();
dayStatus = status;
}
dataRow[columnName + "|Status"] = dayStatus;
}
}
}
}
Trích:
protected void timeSheetGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
//number of cells in the row
int cellCount = e.Row.Cells.Count;

//iterating through every cells and check for the status for each employees
for (int item = 3; item < cellCount; item = item + 3)
{
if (e.Row.Cells != null)
{
var cellText = e.Row.Cells[item].Text;
switch (cellText)
{
case "WDAY"://Working Day
e.Row.Cells[item].VerticalAlign = VerticalAlign.Middle;
break;
case "LEAVE"://Leave
e.Row.Cells[item].VerticalAlign = VerticalAlign.Middle;
e.Row.Cells[item].BackColor = Color.FromArgb(255, 255, 000);
e.Row.Cells[item - 1].BackColor = Color.FromArgb(255, 255, 000);
e.Row.Cells[item - 2].BackColor = Color.FromArgb(255, 255, 000);
break;
case "HDAY"://Holiday
e.Row.Cells[item].VerticalAlign = VerticalAlign.Middle;
e.Row.Cells[item].BackColor = Color.FromArgb(255, 0, 0);
e.Row.Cells[item - 1].BackColor = Color.FromArgb(255, 0, 0);
e.Row.Cells[item - 2].BackColor = Color.FromArgb(255, 0, 0);
break;
}
}
}
}
Trích:
protected void timeSheetGrid_RowCreated(object sender, GridViewRowEventArgs e)
{
//If row type= header customize header cells
if (e.Row.RowType == DataControlRowType.Header)
CustomizeGridHeader((GridView)sender, e.Row, 2);
}

private void CustomizeGridHeader(GridView timeSheetGrid,
GridViewRow gridRow, int headerLevels)
{
for (int item = 1; item <= headerLevels; item++)
{
//creating new header row
GridViewRow gridviewRow = new GridViewRow(0, 0,
DataControlRowType.Header, DataControlRowState.Insert);
IEnumerable<IGrouping<string,>> gridHeaders = null;

//reading existing header
gridHeaders = gridRow.Cells.Cast<tablecell>()
.Select(cell => GetHeaderText(cell.Text, item))
.GroupBy(headerText => headerText);

foreach (var header in gridHeaders)
{
TableHeaderCell cell = new TableHeaderCell();

if (item == 2)
{
cell.Text = header.Key.Substring(header.Key.LastIndexOf(_seper ator) + 1);
}
else
{
cell.Text = header.Key.ToString();
if (!cell.Text.Contains("DENTRY"))
{
cell.ColumnSpan = 3;
}
}
gridviewRow.Cells.Add(cell);
}
// Adding new header to the grid
timeSheetGrid.Controls[0].Controls.AddAt(gridRow.RowIndex, gridviewRow);
}
//hiding existing header
gridRow.Visible = false;
}

private string GetHeaderText(string headerText, int headerLevel)
{
if (headerLevel == 2)
{
return headerText;
}
return headerText.Substring(0, headerText.LastIndexOf(_seperator));
}
Trích:
<table>
<tbody><tr>
<td>
<asp:button id="btnShow" runat="server"
text="Show" onclick="btnShow_Click">
</asp:button></td>
</tr>
<tr>
<td><asp:panel id="pnlContent" scrollbars="Auto"
style="background-color: white; width: 980px; height: 500px; " runat="server">
<asp:gridview id="timeSheetGrid" runat="server" cellpadding="4"
forecolor="#333333" gridlines="Both" bordercolor="#738DA5"
cellspacing="1" width="100%"
onrowcreated="timeSheetGrid_RowCreated"
onrowdatabound="timeSheetGrid_RowDataBound">
<editrowstyle backcolor="#999999">
<footerstyle backcolor="#5D7B9D"
font-bold="True" forecolor="White">
<headerstyle backcolor="#465c71" font-bold="False"
forecolor="White" wrap="false" font-size="Small">
<pagerstyle backcolor="#284775" forecolor="White"
horizontalalign="Center">
<rowstyle backcolor="white" forecolor="black"
wrap="false" font-size="Small">
<selectedrowstyle backcolor="#E2DED6" font-bold="True"
forecolor="#333333">
<sortedascendingcellstyle backcolor="#E9E7E2">
<sortedascendingheaderstyle backcolor="#5216C8C">
<sorteddescendingcellstyle backcolor="#FFFDF8">
<sorteddescendingheaderstyle backcolor="#6F8DAE">
</sorteddescendingheaderstyle>
</sorteddescendingcellstyle>
</sortedascendingheaderstyle>
</sortedascendingcellstyle>
</selectedrowstyle>
</rowstyle>
</pagerstyle>
</headerstyle>
</footerstyle>
</editrowstyle>
</asp:gridview>
</asp:panel>
</td>
</tr>
</tbody>
</table>
---------
Demo : ADZ.VN



Các chủ đề khác cùng chuyên mục này:

Tài sản của mshang1990a

Chữ ký của mshang1990a
Trời sinh k được thông minh
Trả Lời Với Trích Dẫn
Trả lời

Từ khóa được google tìm thấy
add cot cho datagiew, chấm công asp.net, checked goij gripview, dem so cot web asp, gridview dạng bảng, gridview trong asp.net, luoi nhap lieu asp.net, nhap dong trong asp, sap nhap asp, tùy biến gridview, tieu de asp.ne, tùy chỉnh gridview, tuy bien gridview, tuy chinh cho gird view, tuy chinh gridview

Ðiều Chỉnh


©2008 - 2014. Bản quyền thuộc về hệ thống vui chơi giải trí 4vn.eu™
Diễn đàn phát triển dựa trên sự đóng góp của tất cả các thành viên
Tất cả các bài viết tại 4vn.eu thuộc quyền sở hữu của người đăng bài
Vui lòng ghi rõ nguồn gốc khi các bạn sử dụng thông tin tại 4vn.eu™