dev中gridview空間

 

目錄:
一、客戶端常用
1.常用API
2.聚焦行變更事件
3.客戶端選擇多行
4.客戶端選擇行
5. 獲取選擇的行數目
6.單擊行時,選中行
7.通過checkbox 選擇行
8.選擇所有行
9.啓動編輯框,Container.VisibleIndex 獲取行索引
10.啓動服務器端函數:
二、客戶端常用事件

三、服務器端常用屬性

四、服務器端常用方法

五、服務器端常用事件

六、列的設置
1.模板列使用超鏈接
2.模板列使用Button用法
3. 使用命令列

七、其他


------------------------
------------------------
內容:
一客戶端常用
1.常用API:
  PerformCallback(this.value);
    CollapseAll()
    ExpandAll()
    SelectRows()
    UnselectRows()
    UnselectAllRowsOnPage()
    SelectAllRowsOnPage(this.checked)

2.聚焦行變更事件。向服務器查詢聚焦行的 "EmployeeID" 和 "Notes" 信息,並該信息將返回到 OnGetRowValues() 函數
 function OnGridFocusedRowChanged() {
        grid.GetRowValues(grid.GetFocusedRowIndex(), 'EmployeeID;Notes', OnGetRowValues);
    }
    // 處理服務器端傳回的數據(values是個數組,包含 "EmployeeID" 和 "Notes" 值)
    function OnGetRowValues(values) {
        DetailImage.SetImageUrl("FocusedRow.aspx?Photo=" + values[0]);
        DetailNotes.SetText(values[1]);
    }
 <ClientSideEvents FocusedRowChanged="function(s, e) { OnGridFocusedRowChanged(); }"/>

3.客戶端選擇多行
  function grid_SelectionChanged(s, e) {
        s.GetSelectedFieldValues("ContactName", GetSelectedFieldValuesCallback);
    }
    function GetSelectedFieldValuesCallback(values) {   
        selList.BeginUpdate();
        try {
            selList.ClearItems();
            for(var i = 0; i < values.length; i ++) {
                selList.AddItem(values[i]);
            }
        } finally {
            selList.EndUpdate();
        }
        document.getElementById("selCount").innerHTML = grid.GetSelectedRowCount();
    }
  <ClientSideEvents SelectionChanged="grid_SelectionChanged" />

4.客戶端選擇行
function OnGridFocusedRowChanged()
    {
        // Query the server for the "EmployeeID" and "Notes" fields from the focused row
        // The values will be returned to the OnGetRowValues() function
        grid.GetRowValues(grid.GetFocusedRowIndex(), 'EmployeeID;Notes', OnGetRowValues);
    }
    //Value array contains "EmployeeID" and "Notes" field values returned from the server
    function OnGetRowValues(values)
    {
        var notes = document.getElementById("detailnotes");
        notes.value = values[1];
        var image = document.getElementById("detailimage");
        image.src = "FocusedRow.aspx?Photo=" + values[0];
    }

5. 獲取選擇的行數目  grid.GetSelectedRowCount()
  

6.單擊行時,選中行
function OnRowClick(e) {
    //Clear the text selection
    _aspxClearSelection();
    //Unselect all rows
    grid._selectAllRowsOnPage(false);
    //Select the row
    grid.SelectRow(e.visibleIndex, true);
}
 <ClientSideEvents RowClick="function(s, e) { OnRowClick(e); }" />

7.通過checkbox 選擇行  設置GridView 的屬性ShowSelectCheckBox =true
function grid_SelectionChanged(s,e) {
            s.GetSelectedFieldValues("ContactName",GetSelectedFieldValuesCallback);
        }
GetSelectedFieldValuesCallback 回調函數

function GetSelectedFieldValuesCallback(values) {
            selList.BeginUpdate();
            try {
                selList.ClearItems();
                for(var i=0;i<values.length;i++) {
                    selList.AddItem(values[i]);
                }
            } finally {
                selList.EndUpdate();
            }
            document.getElementById("selCount").innerHTML=grid.GetSelectedRowCount();
        }

selList 是ASPxListBox控件

8.選擇所有行: grid.SelectAllRowsOnPage(this.checked);

9.grid.StartEditRow(VisibleIndex) 啓動編輯框,Container.VisibleIndex 獲取行索引
<dxwgv:GridViewDataColumn FieldName="CustomerID" VisibleIndex="0">
                <DataItemTemplate>
                    <%#GetEditRowHtml(Container.VisibleIndex) %>  GetEditRowHtml 爲後臺一個方法返回一個字符串
                </DataItemTemplate>
            </dxwgv:GridViewDataColumn>
protected string GetEditRowHtml(int visibleIndex) {
        string rowValue = Convert.ToString(grid.GetRowValues(visibleIndex, "Country"));
        string cbValue = Convert.ToString(cbCountries.Value);
        if(rowValue == cbValue)
            return string.Format("<a href='JavaScript:grid.StartEditRow({0})'> Edit </a>", visibleIndex);
        return "Read Only";
    }

10.啓動服務器端函數:  _CustomerCallBack()
  PerformCallback(parameter)

二、客戶端常用事件
1.
<ClientSideEvents FocusedRowChanged="function(s, e) { OnGridFocusedRowChanged(); }"/>
2.
 <ClientSideEvents SelectionChanged="grid_SelectionChanged" />

3.
 <ClientSideEvents RowClick="function(s, e) { OnRowClick(e); }" />

三、服務器端常用屬性

四、服務器端常用方法
1.獲取指定行的數據
object masterKeyValue = masterGrid.GetRowValues(Convert.ToInt32(e.Parameters), "CategoryID");

2.查找包含在gridview中的控件
 grid.FindRowTemplateControl(e.VisibleIndex,"id");
 grid.FindRowCellTemplateControl(e.VisibleIndex, null, "id");
 Label label = grid.FindRowCellTemplateControl(e.VisibleIndex, null, "changePercent") as Label;

六、服務器端常用事件


1.行創建時執行事件
 protected void grid_HtmlRowCreated(object sender, ASPxGridViewTableRowEventArgs e)
    {
         e.Row.Cells[0].Enabled = false;
 e.GetValue("Change")    decimal change = (decimal)e.GetValue("Change");

    } 
2.動態設置每個單元格的顯示內容:
 protected void grid_CustomColumnDisplayText(object sender, ASPxGridViewColumnDisplayTextEventArgs e)

 e.Column.FieldName 
  e.DisplayText 
}
3.編輯事件
 protected void grid_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)

4. protected void grid_BeforeColumnSortingGrouping(object sender, ASPxGridViewBeforeColumnGroupingSortingEventArgs e)
    {
        BindGrid();
    }

六、列的設置
1.模板列使用超鏈接
a.<dxwgv:GridViewDataColumn Caption=" " Width="64px">
                <DataItemTemplate>
                    <a href="javascript:showEditForm('<%# Container.KeyValue.ToString() %>');">編輯</a>
                    <a href="javascript:deleteRow('<%# Container.KeyValue.ToString() %>');">刪除</a>
                </DataItemTemplate>
                <Settings AllowDragDrop="False" />
            </dxwgv:GridViewDataColumn>


  b.<dxwgv:GridViewDataColumn Caption="單號" FieldName="note_id">
            <DataItemTemplate>
            <a href="VisitorNoteDetail.aspx?note_id=<%#Eval("note_id") %>"><%#Eval("note_id") %></a>
            </DataItemTemplate>
            </dxwgv:GridViewDataColumn>

c.<dxwgv:GridViewDataHyperLinkColumn Caption="單據ID" FieldName="note_id" Width="80px"
                VisibleIndex="2">
                <PropertiesHyperLinkEdit TextFormatString="note_id" NavigateUrlFormatString="VisitorNoteDetail.aspx?id={0}">
                </PropertiesHyperLinkEdit>
            </dxwgv:GridViewDataHyperLinkColumn>

2.模板列使用Button用法
a. 前臺代碼:
  <dxwgv:GridViewDataColumn Caption="審批" Width="110" VisibleIndex="1">
                <DataItemTemplate>
                    <div style="float: left; padding-right:3px;">
                        <dxe:ASPxButton ID="btAllow" runat="server" Text="通過" CommandName="Allow"  CommandArgument='<

%#Eval("note_id")%>'>
                        <ClientSideEvents Click="function(s,e) {if(!confirm('確定審批該單據嗎?'))

{e.processOnServer=false;}}" />
                        </dxe:ASPxButton>
                    </div>
                    <dxe:ASPxButton ID="btRefuse" runat="server" Text="拒絕" CommandName="Refuse" CommandArgument='<%#Eval

("note_id")%>' >
                        <ClientSideEvents Click="function(s,e) {if(!confirm('確定審批該單據嗎?'))

{e.processOnServer=false;}}" />
                    </dxe:ASPxButton>
                </DataItemTemplate>
            </dxwgv:GridViewDataColumn>

b.後臺代碼:(事件:grid_RowCommand)
 
 protected void grid_RowCommand(object sender, ASPxGridViewRowCommandEventArgs e)
    {
       
        ASPxButton button=e.CommandSource as ASPxButton;
        int noteID = Convert.ToInt32(button.CommandArgument.ToString());
        if (button.CommandName == "Allow")
        {
            ApproveNote(noteID, 1, 1);
          
        }
        else
        {
            ApproveNote(noteID, 2, 0);
        }
        BindGrid();
    }

3. 使用命令列
 a.<%--<dxwgv:GridViewCommandColumn Caption="審批" ButtonType="Button" Width="80px" VisibleIndex="1">
                <CustomButtons>
                    <dxwgv:GridViewCommandColumnCustomButton ID="Allow" Text="通過">
                    </dxwgv:GridViewCommandColumnCustomButton>
                    <dxwgv:GridViewCommandColumnCustomButton ID="Refuse" Text="拒絕">
                    </dxwgv:GridViewCommandColumnCustomButton>
                </CustomButtons>
            </dxwgv:GridViewCommandColumn>--%>

後臺事件是:_CustomerCallBack


b. <dxwgv:GridViewCommandColumn ShowSelectCheckbox="true"  Width="30px"  VisibleIndex="1"  >
                <HeaderTemplate>
                    <input type="checkbox" οnclick="grid.SelectAllRowsOnPage(this.checked);" title="選擇/放棄選擇本頁的所有

行" />
                </HeaderTemplate>
                <HeaderStyle HorizontalAlign="Center" />
            </dxwgv:GridViewCommandColumn>

後臺獲取選擇行的方法: List<object> noteIds=grid.GetSelectedFieldValues("note_id");

七、其他
1.ASPxGridView 排序方法
 private string GetSort()
    {
        string sortID = "";
        if (grid.GetSortedColumns().Count > 0)
        {
            GridViewDataColumn c = grid.GetSortedColumns()[0];
            sortID = c.FieldName + (c.SortOrder == ColumnSortOrder.Descending ? " DESC" : " ASC");
        }
        return sortID;

    }
對應的ASPxGridView 後臺事件:
 protected void grid_BeforeColumnSortingGrouping(object sender, ASPxGridViewBeforeColumnGroupingSortingEventArgs e)
    {
        BindGrid();
    }

發佈了10 篇原創文章 · 獲贊 4 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章