簡體   English   中英

ASP.NET C#GridView Tab索引問題

[英]ASP.NET C# GridView Tab Index issue

似乎在向ASP.NET GridView添加行時,Tab索引的行為不符合預期(或期望)。 選項卡將向下移動到列中的每一行,然后移動到下一列,依此類推,而不是在一行中的每列上進行制表,然后移動到下一行。 簡單地說,它將垂直而不是水平。 對於用戶嚴重依賴鍵盤輸入的數據輸入應用程序,這可能是一個問題。

針對這個問題的解決方案?

我已經搞砸了一段時間並且有這個解決方案! 希望它可以幫助其他有同樣問題的人。

protected void theGridView_DataBound(object sender, EventArgs e)
{
    SetTabIndexes();
}


private void SetTabIndexes()
{
    short currentTabIndex = 0;
    inputFieldBeforeGridView.TabIndex = ++currentTabIndex;

    foreach (GridViewRow gvr in theGridView.Rows)
    {
        DropDownList dropDown1 = (DropDownList)gvr.FindControl("dropDown1");
        dropDown1.TabIndex = ++currentTabIndex;

        TextBox inputField1 = (TextBox)gvr.FindControl("inputField1");
        inputField1.TabIndex = ++currentTabIndex;

        TextBox inputField2 = (TextBox)gvr.FindControl("inputField2");
        inputField2.TabIndex = ++currentTabIndex; 

        TextBox inputField3 = (TextBox)gvr.FindControl("inputField3");
        inputField3.TabIndex = ++currentTabIndex;
    }

    someLinkAfterGridView.TabIndex = ++currentTabIndex;
}

看看在轉發器自動創建TabIndex

對於每個控件,您可以將TabIndex設置為后面代碼中的屬性。

<asp:GridView ID="gv" runat="server">
  <columns>
    <asp:TemplateField HeaderText="Action" ShowHeader="False" Visible="true"> 
      <ItemTemplate>
        <asp:CheckBox ID="cbGroup" Checked="true" runat="server" TabIndex='<%# TabIndex %>' Text='<%# Eval("Title") %>' />
      </ItemTemplate>
    </asp:TemplateField>
  </columns>
</asp:GridVeiw>

然后在代碼后面增加一個TabIndex計數器:

private int _tabIndex = 0;

public int TabIndex
{
  get
  {
    _tabIndex++;
    return _tabIndex;
  }
}

您可以在rowdatabound事件上手動為網格內的所有控件指定TabIndex。 計算出您希望在特定行上選擇多少個控件,然后根據行索引生成Tab鍵順序。

暫無
暫無

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

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