none
請問GridView如何抓取滑鼠點下去的欄位名稱呢? RRS feed

  • 問題

  •  

    因為需要知道,當滑鼠點下去的欄位名稱

     

    才能進行後續判斷動作

     

    請問GridView要如何抓取滑鼠點下去的欄位名稱呢?

    2008年8月13日 上午 07:55

解答

  • 你想要做的事情並不是 GridView 原本提供的功能, 所以你必須另外想辦法。這種事情其實應該並不難, 只是我覺得你應該自己下手去試試看, 真的束手無策了再說。如此, 未來才能應付更麻煩的問題, 而不會事事依賴別人。

     

    你想要抓到欄位名稱, 那請問是不是得回到 Server 端才能抓到? 你應該想一下, 要怎樣才能 Postback 到 Server? 是不是可以使用什麼控制項或什麼欄位? 有什麼控制項或欄位可以用? 我覺得如果你朝這個方向稍為想一下, 或許答案就呼之欲出了。

    2008年8月14日 上午 01:33

所有回覆

  • 我不知道你要去哪裡點, 如果是排序, 可以參考下列做法:

    Code Snippet
     Protected Sub GridView1_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles GridView1.Sorting
            Response.Write(e.SortExpression)
        End Sub

     

     

    2008年8月13日 下午 02:48
    版主
  •  

    謝謝你的回答

     

    我的本意是假如我在欄位名稱為ID,點選ID這欄各ROW的值

     

    可以抓取到欄位名稱:ID這二個字!

    2008年8月14日 上午 12:12
  • 如果要用滑鼠去作, 應該可以透過下列方法- onmousedown, 然後前端透過AJAX回傳到後端:

    Code Snippet
     <script type="text/javascript">
            function test(i) {
                alert(i);
            }
        </script>
     
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
                AutoGenerateColumns="False" DataKeyNames="EmployeeID" DataSourceID="ObjectDataSource1">
                <Columns>
                    <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowSelectButton="True" />
                    <asp:TemplateField HeaderText="EmployeeID" InsertVisible="False" SortExpression="EmployeeID">
                        <EditItemTemplate>
                            <asp:Label ID="Label1" runat="server" Text='<%# Eval("EmployeeID") %>'></asp:Label>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label1" runat="server" onmousedown="test('EmployeeID')"  ToolTip="EmployeeID" Text='<%# Bind("EmployeeID") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>

     

     

    2008年8月14日 上午 01:31
    版主
  • 你想要做的事情並不是 GridView 原本提供的功能, 所以你必須另外想辦法。這種事情其實應該並不難, 只是我覺得你應該自己下手去試試看, 真的束手無策了再說。如此, 未來才能應付更麻煩的問題, 而不會事事依賴別人。

     

    你想要抓到欄位名稱, 那請問是不是得回到 Server 端才能抓到? 你應該想一下, 要怎樣才能 Postback 到 Server? 是不是可以使用什麼控制項或什麼欄位? 有什麼控制項或欄位可以用? 我覺得如果你朝這個方向稍為想一下, 或許答案就呼之欲出了。

    2008年8月14日 上午 01:33
  •  

    如果是我會先在bind之前,把所有欄位名稱儲存成陣列(按照GridView中的排列順序)

    然後在GridView.DataBound事件中把每個Item加入"OnClick"的Attribute

    Code Snippet

    Item(0).Attributes.Add("onClick", "alert('"+array(0).ToString+"');")

     

     

     

    當然是用回圈把原本Arrray中的值一一設定到對應的Item(Cell)中

    在屬性中加入你要做的事情

    這樣可以不用每點一次去觸發SelectIndexChange事件

     

    不過如果你要做的事情,必須去觸發server event的話,就直接用SelectIndexChange去觸發就好啦!

     

    2008年8月14日 上午 02:27
  •  

    謝謝Johnny.Net的指教

     

    我會朝這個方向思考

     

    也感謝各位先進的幫忙!

    2008年8月14日 上午 05:35