0

グリッドビューで具体的に定義されたロールにポストバックすることは可能ですか? 基本的に、ドロップダウンリストを持つグリッドビューがあります。ユーザーがドロップダウン リストからオプションを選択すると、ポストバックが同じ列に戻るようにします。グリッドビューは次のとおりです。

 <asp:GridView ID="viewThemeTypeAssociationsGridView" runat="server" AutoGenerateColumns="False"
                                BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" DataKeyNames="PK_Theme"
                                CellPadding="3" CellSpacing="2" DataSourceID="SqlDataSource6" OnRowDataBound="viewThemeTypeAssociationsGridView_OnRowDataBound">
                                <Columns>
                                    <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
                                    <asp:BoundField DataField="Type" HeaderText="Type" SortExpression="Type" />
                                    <asp:TemplateField HeaderText="Choose Theme Type">
                                        <ItemTemplate>
                                            <asp:DropDownList ID="chooseThemeTypeDropDown" runat="server" DataTextField="Type" DataValueField="PK_ThemeType" AutoPostBack="true" DataSourceID="SqlDataSource9" CssClass="dropDownList" OnDataBound="chooseThemeTypeDropDown_OnDataBound" Visible="false" OnSelectedIndexChanged="chooseThemeTypeDropDown_OnSelectedIndexChanged">
                                            </asp:DropDownList>
                                            <asp:SqlDataSource ID="SqlDataSource9" runat="server" ConnectionString="<%$ ConnectionStrings:ApplicationServices %>"
                                                SelectCommand="SELECT [Type], [PK_ThemeType] FROM [ThemeType] WHERE [Deleted] = 0 ORDER BY [Type] ASC">
                                            </asp:SqlDataSource>
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                </Columns>
                                <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
                                <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
                                <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
                                <RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
                                <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
                                <SortedAscendingCellStyle BackColor="#FFF1D4" />
                                <SortedAscendingHeaderStyle BackColor="#B95C30" />
                                <SortedDescendingCellStyle BackColor="#F1E5CE" />
                                <SortedDescendingHeaderStyle BackColor="#93451F" />
                            </asp:GridView>
                            <asp:SqlDataSource ID="SqlDataSource6" runat="server" ConnectionString="<%$ ConnectionStrings:ApplicationServices %>"
                                SelectCommand="SELECT [Theme].[PK_Theme], [Theme].[Name], [ThemeType].[Type] FROM [Theme] LEFT OUTER JOIN [ThemeType] ON [Theme].[ThemeTypeId] = [ThemeType].[PK_ThemeType] JOIN [ProductTheme] ON [ProductTheme].[ThemeId]=[Theme].[PK_Theme] WHERE ProductTheme.ProductID LIKE @productParam AND ProductTheme.ThemeId = Theme.PK_Theme AND COALESCE([THEME].[THEMETYPEID], 'null') LIKE @assignedParam GROUP BY [Theme].[Name], [ThemeType].[Type], [Theme].[PK_Theme] ORDER BY CASE WHEN [ThemeType].[Type] IS NULL THEN 0 ELSE 1 END, [Theme].[Name]">
                                <SelectParameters>
                                    <asp:QueryStringParameter Name="productParam" Type="String" />
                                    <asp:QueryStringParameter Name="assignedParam" Type="String" />
                                </SelectParameters>
                            </asp:SqlDataSource>

さらに、これは私が現在行っているポストバックですが、数百行の長さになる可能性のあるグリッドビューの上部に移動するだけです。

 ClientScript.RegisterStartupScript(this.GetType(), "hash", "location.hash = '#viewPanelPostBack';", true);

達成した結果を得るにはどうすればよいですか?

4

1 に答える 1

1

ScrollIntoViewドロップダウンのクライアント側 ID と組み合わせて JS コマンドを使用します。OnSelectedIndexChangedドロップダウンのイベントに次のコードを追加します。

ClientScript.RegisterStartupScript(this.GetType(), "hash", "document.getElementById('" + ((DropDownList)sender).ClientID + "').scrollIntoView();", true);

ポストバック時に、現在クリックされているドロップダウンをスクロールして表示に戻します。

または、次のような単純で簡単なことを試してみてください

((DropDownList)sender).Focus();
于 2013-07-30T16:17:51.543 に答える