簡體   English   中英

為什么GridView的RowCreated函數中e.Row.DataItem為null

[英]Why is e.Row.DataItem null in RowCreated function of GridView

GridView的部分HTML源(ID: MyGrid ):

...
<tr title="Task is Past Due" style="color:#C00000;background-color:#EBE9E9;">
    <td>
        <input type="image" name="ctl00$ContentMain$yourTasksGV$ctl04$btnShowDepend" id="btnShowDepend" title="Click to view Dependencies" class="gvTaskDep btnShowDepend" src="es.png" alt="" />
        <div id="pnlSubTasks" class="pnlSubTasks">
            <div>
            </div>
        </div>
    </td>
    <td style="background-color:DarkRed;">
    </td>
    <td class="taskTableColumn">SOMETHING</td>
    <td class="taskTableColumn">Something</td>
    <td class="taskTableColumn">Something</td>
    <td class="taskTableColumn">03-09-2015</td> //<asp:BoundField HeaderStyle-Width="7%" DataField="Due Date" HeaderText="Due" SortExpression="Due Date" ItemStyle-CssClass="taskTableColumn" />
    <td class="taskTableColumn">Something</td>
    <td class="taskTableColumn">Something</td>
    <td class="taskTableColumn">Something</td>
    <td class="taskTableColumn">Something</td>
    <td class="taskTableColumn">&nbsp;</td>
    <td class="taskTableColumn"></td>
    <td class="hideTag">1</td>
    <td class="hideTag">155</td>
</tr>
...

當我單擊btnShowDepend圖像以執行某些操作時,它在GridView RowCreated函數中失敗:

if (e.Row.RowType == DataControlRowType.DataRow)
{
    var k = DataBinder.Eval(e.Row.DataItem, "Due Date"); //k=null
    DateTime dt;
    DateTime.TryParse(DataBinder.Eval(e.Row.DataItem, "Due Date").ToString(), out dt); //e.Row.DataItem = null
    if (dt < DateTime.Today)
    {
        //or do it for a specific cell
        e.Row.Cells[1].BackColor = System.Drawing.Color.DarkRed;
    }
}

為什么k null,以及如何修改代碼以修復它。

請注意:如果也可以使用JQuery完成,那么我希望該解決方案。

我想在列的Due Date小於今天的日期的任何行中將字體顏色設為紅色。

我不是ASP.net專家,但是使用jQuery可以使用Date.parse如下所示:

$('#btnShowDepend').on('click', function () {
    var now = Date.now();

    $('td.taskTableColumn').each(function () {
        var date = Date.parse($(this).text());

        // Skip invalid dates
        if (isNaN(date)) return;

        if (date < now) {
            $(this).css({
                backgroundColor: 'red'
            });
        }
    });
});

編輯:

要遍歷整個表,如果每行的“第六列”包含的日期早於今天,則將其變為紅色,您可以這樣做:

$('#btnShowDepend').on('click', function () {
    var now = Date.now();

    $('#myTableId tr').each(function () {
        var $row = $(this);
        var the6thColumn = $row.find('.my6thColumnClass');
        var date = Date.parse($(the6thColumn).text());

        // Skip invalid dates
        if (isNaN(date)) return;

        if (date < now) {
            $row.css({
                backgroundColor: 'red'
            });
        }
    });
});

假設:

  1. 有問題的表的ID為myTableId
  2. “第六列”單元格具有my6thColumnClass的類, my6thColumnClass所示: <td class="my6thColumnClass">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM