중첩 된 래스터 격자를 사용하고 있습니다. 코드를 살펴보십시오. 액세스 상세 표 rowdrop 이벤트의 데이터 키 번호
<telerik:RadGrid ID="radGridRoutes" runat="server" AutoGenerateColumns="false" ShowStatusBar="True"
AllowSorting="True" AllowPaging="True" ClientSettings-Scrolling-EnableVirtualScrollPaging="false"
ClientSettings-Scrolling-AllowScroll="false"
OnNeedDataSource="Routes_NeedDataSource" OnDetailTableDataBind="radGridRoutes_DetailTableDataBind" AllowFilteringByColumn="True"
EnableLinqExpressions="false" OnInsertCommand="Routes_InsertCommand"
OnUpdateCommand="radGridRoutes_UpdateCommand"
OnItemCommand="radGridRoutes_ItemCommand"
OnPreRender="radGridRoutes_PreRender" ClientSettings-AllowRowsDragDrop="true"
OnRowDrop="radGridRoutes_RowDrop">
<ClientSettings AllowDragToGroup="True">
<Selecting AllowRowSelect="True" />
</ClientSettings>
<GroupingSettings CaseSensitive="false" />
<SelectedItemStyle CssClass="SelectedItem" />
<PagerStyle Mode="NextPrevNumericAndAdvanced"></PagerStyle>
<ValidationSettings CommandsToValidate="PerformInsert,Update" EnableModelValidation="true"
EnableValidation="true" />
<FilterItemStyle BackColor="#F8F8F8" HorizontalAlign="Left" />
<FilterMenu EnableImageSprites="false">
</FilterMenu>
<MasterTableView DataKeyNames="ID" AllowMultiColumnSorting="false"
Width="100%" CommandItemDisplay="Top" Name="Routes">
<AlternatingItemStyle BackColor="WhiteSmoke" />
<DetailTables>
<telerik:GridTableView OnRowDrop="radGridRoutes_RowDrop" ClientSettings-AllowRowsDragDrop="true"
DataKeyNames="ID,DisplayOrder,RouteID" Width="100%" runat="server"
CommandItemDisplay="Top" Name="Stops" AllowFilteringByColumn="false">
<CommandItemSettings AddNewRecordText="Add New Stops" ShowAddNewRecordButton="true" />
<ParentTableRelation>
<%-- <telerik:GridRelationFields DetailKeyField="ID" MasterKeyField="ID" />--%>
</ParentTableRelation>
<RowIndicatorColumn Visible="True" FilterControlAltText="Filter RowIndicator column">
</RowIndicatorColumn>
<ExpandCollapseColumn Visible="True" FilterControlAltText="Filter ExpandColumn column">
</ExpandCollapseColumn>
<Columns>
<telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditTask" EditText="Edit"
UpdateText="Update" CancelText="Cancel">
<HeaderStyle Width="20px" />
</telerik:GridEditCommandColumn>
<telerik:GridTemplateColumn SortExpression="Name" HeaderText="Name" UniqueName="Name"
HeaderButtonType="TextButton" HeaderStyle-Width="15%" ItemStyle-Width="15%" DataField="tName">
<ItemTemplate>
<%# Eval("Name")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtName" runat="server" Width="250px" Text='<%# Eval("Name")%>'></asp:TextBox>
<asp:RequiredFieldValidator ID="requiredName" ControlToValidate="txtName"
CssClass="validationMessage" ErrorMessage="Name is required."
Text="* required" runat="server" Display="Dynamic"></asp:RequiredFieldValidator>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn SortExpression="Comment" HeaderText="Comment" UniqueName="Comment"
HeaderButtonType="TextButton" DataField="Comment">
<ItemTemplate>
<%# Eval("Comment")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtComment" TextMode="MultiLine" Rows="4" Width="250px" runat="server" Text='<%# Eval("Comment")%>'></asp:TextBox>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn SortExpression="Address" HeaderText="Address"
DataField="Address" UniqueName="Address" HeaderButtonType="TextButton">
<ItemTemplate>
<%# Eval("Address")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtAddress" Width="250px" TextMode="MultiLine" Text='<%# Bind("Address") %>' runat="server"></asp:TextBox>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn SortExpression="Phone" HeaderText="Phone" UniqueName="Phone"
HeaderButtonType="TextButton" DataField="Phone">
<ItemTemplate>
<%# Eval("Phone")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtPhone" Rows="4" Width="250px" runat="server" Text='<%# Eval("Phone")%>'></asp:TextBox>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn SortExpression="Email" HeaderText="Email" UniqueName="Email"
HeaderButtonType="TextButton" DataField="Email">
<ItemTemplate>
<%# Eval("Email")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtEmail" Rows="4" Width="250px" runat="server" Text='<%# Eval("Email")%>'></asp:TextBox>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn SortExpression="ManagerName" HeaderText="ManagerName" UniqueName="ManagerName"
HeaderButtonType="TextButton" DataField="ManagerName">
<ItemTemplate>
<%# Eval("ManagerName")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtManagerName" Rows="4" Width="250px" runat="server" Text='<%# Eval("ManagerName")%>'></asp:TextBox>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn SortExpression="NumberOfRooms" HeaderText="#Rooms" UniqueName="NumberOfRooms"
HeaderButtonType="TextButton" DataField="NumberOfRooms">
<ItemTemplate>
<%# Eval("NumberOfRooms")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtNumberOfRooms" Width="250px" Rows="4" runat="server" Text='<%# Eval("NumberOfRooms")%>'></asp:TextBox>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn SortExpression="Merchandising" HeaderText="Merchandising" UniqueName="Merchandising"
HeaderButtonType="TextButton" DataField="Merchandising">
<ItemTemplate>
<%# Eval("Merchandising")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtMerchandising" Width="250px" Rows="4" runat="server" Text='<%# Eval("Merchandising")%>'></asp:TextBox>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn SortExpression="Frequency" HeaderText="Frequency"
DataField="Frequency" UniqueName="Frequency" HeaderButtonType="TextButton">
<ItemTemplate>
<%# GetFrequencyName(Convert.ToInt32(Eval("FrequencyID"))) %>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="drpFreq" runat="server" DataTextField="Name" DataValueField="ID"
AppendDataBoundItems="true">
<asp:ListItem Text="--Select--" Value="-1">
</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn SortExpression="DisplayOrder" HeaderText="Display Order" UniqueName="DisplayOrder"
HeaderButtonType="TextButton" HeaderStyle-Width="15%" ItemStyle-Width="15%" DataField="DisplayOrder">
<ItemTemplate>
<%# Eval("DisplayOrder")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtDisplayOrder" runat="server" Width="250px" Text='<%# Eval("DisplayOrder")%>'></asp:TextBox>
<asp:RequiredFieldValidator ID="requiredDisplayOrder" ControlToValidate="txtDisplayOrder"
CssClass="validationMessage" ErrorMessage="Display Order is required."
Text="* required" runat="server" Display="Dynamic"></asp:RequiredFieldValidator>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Delete" AllowFiltering="false">
<ItemTemplate>
<asp:LinkButton ID="lnkDelete" CommandName="DeleteStops" CommandArgument=' <%# Eval("ID") %>' runat="server" OnClientClick="javascript:if (!confirm('Are you sure you want to delete Stop?')) {
return false;
}">Delete</asp:LinkButton>
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
<EditFormSettings>
<EditColumn FilterControlAltText="Filter EditCommandColumn column">
</EditColumn>
</EditFormSettings>
</telerik:GridTableView>
</DetailTables>
<RowIndicatorColumn Visible="True" FilterControlAltText="Filter RowIndicator column">
</RowIndicatorColumn>
<ExpandCollapseColumn Visible="True" FilterControlAltText="Filter ExpandColumn column">
</ExpandCollapseColumn>
<Columns>
<telerik:GridEditCommandColumn ButtonType="ImageButton" CancelText="Cancel" EditText="Edit"
UpdateText="Update" UniqueName="EditRoutes" ItemStyle-Width="5%">
<HeaderStyle Width="5%" />
</telerik:GridEditCommandColumn>
<telerik:GridTemplateColumn SortExpression="Name" HeaderText="Name" UniqueName="RouteName"
HeaderButtonType="TextButton" HeaderStyle-Width="20%" ItemStyle-Width="20%" DataField="Name">
<ItemTemplate>
<%# Eval("Name")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtRouteName" runat="server" Text='<%# Eval("Name")%>'></asp:TextBox>
<asp:RequiredFieldValidator ID="requiredRouteName" ControlToValidate="txtRouteName"
CssClass="validationMessage" ErrorMessage="Name is required."
Text="* required" runat="server" Display="Dynamic"></asp:RequiredFieldValidator>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn SortExpression="Comment" HeaderText="Comment" UniqueName="Comment"
HeaderButtonType="TextButton" DataField="Comment">
<ItemTemplate>
<%# Eval("Comment")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtComment" TextMode="MultiLine" Rows="4" Width="250px" runat="server" Text='<%# Eval("Comment")%>'></asp:TextBox>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Delete" AllowFiltering="false">
<ItemTemplate>
<asp:LinkButton ID="lnkDelete" CommandName="Delete" CommandArgument=' <%# Eval("ID") %>' runat="server" OnClientClick="javascript:if (!confirm('Are you sure you want to delete route?')) {
return false;
}">Delete</asp:LinkButton>
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
<SortExpressions>
<telerik:GridSortExpression FieldName="Name"></telerik:GridSortExpression>
</SortExpressions>
<CommandItemSettings AddNewRecordText="Add New Route" ShowAddNewRecordButton="true" />
<EditFormSettings>
<EditColumn UniqueName="EditCommandColumn1" FilterControlAltText="Filter EditCommandColumn1 column">
</EditColumn>
</EditFormSettings>
</MasterTableView>
</telerik:RadGrid>
그리고 rowDrop 이벤트 뒤에 코드가
protected void radGridRoutes_RowDrop(object sender, GridDragDropEventArgs e)
{
GridDataItem RowDragged = e.DraggedItems.FirstOrDefault();
e.DraggedItems[0].GetDataKeyValue("DisplayOrder");
int OriginalID = Convert.ToInt32(RowDragged.GetDataKeyValue("ID"));
int OriginalOrder = Convert.ToInt32(RowDragged.GetDataKeyValue("DisplayOrder"));
int RouteID = Convert.ToInt32(RowDragged.GetDataKeyValue("RouteID"));
int DestID = Convert.ToInt32(e.DestDataItem.GetDataKeyValue("ID"));
int DestOrder = Convert.ToInt32(e.DestDataItem.GetDataKeyValue("DisplayOrder"));
UpdateOrder(OriginalID, OriginalOrder, DestID, RouteID);
}
입니다 이제 문제는 내가 중첩 된 gridTableView에서 datakeyNames에 액세스 할 수 있습니다. 나는 그것을 알아낼 수 없다. rowdrop 이벤트에서 중첩 된 gridtableview에서 ID, DisplayOrder, RouteID를 얻는 방법을 제안 해주십시오. 현재 그것은 null 값을 내게 제공하고 있습니다.
부모 행을 드래그하면 해당 키를 가져올 수 없습니다. 그리드에서 자식 행을 드래그 한 경우에만 해당 값을 가져옵니다. 부모 행에서 드래그 앤 드롭을 중지하거나 서버 측 행 드롭 이벤트에서 행을 식별해야합니다. 귀하의 의견을 제공하십시오. –
@ jayeshGoyani 그럼 radGird의 ClientSettings-AllowRowsDragDrop = "true"를 false로 설정하고 telerik의 경우 true로 설정해야합니다. GridTableView? 내가 그 일을하는 경우, 나는 심지어 자식 그리드의 행을 끌 수 없습니다. –
나는 그 제안에 대한 코드를 제공 할 것입니다. 부모 행에서 드래그 앤 드롭을 중지해야합니다. 오직 임상가 측 또는 서버 측에서 솔루션을 원한다는 사실을 알고 싶습니다. –