gpt4 book ai didi

c# - DetailsView 不会进入编辑模式

转载 作者:行者123 更新时间:2023-11-30 18:02:57 25 4
gpt4 key购买 nike

我似乎无法让我的详细信息 View 进入编辑模式。我以编程方式绑定(bind)数据源。当项目命令是“编辑”时,我将模式更改为“编辑”并重新绑定(bind)数据源。我检查了控件数据绑定(bind)后,它仍处于编辑模式,但详细信息 View 未在编辑模式下显示。任何帮助将不胜感激。目前,我的详细信息 View 已简化为一个用于测试的元素。 (这是来自 ASP.NET 论坛的交叉帖子,因为我很快就能得到一些帮助)

ASPX:

<div style="width:990px;height:430px;">
<div style="width:650px;height:430px;float:left;">
<telerik:RadAjaxLoadingPanel ID="devicesLoadingPanel" runat="server" Skin="Simple" />
<telerik:RadGrid ID="devicesRadGrid" runat="server" Skin="Simple" AllowPaging="true" Width="550" PageSize="15"
AutoGenerateColumns="false" DataSourceID="SqlDataSource1" OnSelectedIndexChanged="devicesGrid_SelectedIndexChanged">
<MasterTableView DataKeyNames="ID" CommandItemDisplay="Top">
<Columns>
<telerik:GridTemplateColumn HeaderText="Type" SortExpression="Type">
<ItemTemplate>
<asp:Label ID="lblType" runat="server" Text='<%# evalLabelType((Eval("UnitType"))) %>' />
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn HeaderText="Name" DataField="Name" SortExpression="Name"></telerik:GridBoundColumn>
<telerik:GridBoundColumn HeaderText="Description" DataField="Description" SortExpression="Description"></telerik:GridBoundColumn>
<telerik:GridTemplateColumn HeaderText="Location">
<ItemTemplate>
<asp:Label ID="lblDevicesLocation" runat="server" Text='<%# evalDevicesLocation(Eval("LocationID")) %>' />
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
<CommandItemSettings ShowAddNewRecordButton="true" ShowRefreshButton="false" />
</MasterTableView>
<ClientSettings EnablePostBackOnRowClick="true">
<Selecting AllowRowSelect="true" />
</ClientSettings>
</telerik:RadGrid>

</div>
<div style="border: 1px solid #000;width:250px;height:430px;float:left;" >
<asp:DetailsView ID="devicesDetailsView" runat="server" AutoGenerateRows="false" Width="200" Height="430"
CellPadding="0" GridLines="None"
OnItemCommand="devicesDetails_ItemCommand" OnDataBound="devicesDetails_DataBound">
<Fields>
<asp:TemplateField>
<ItemTemplate>
<span class="titles">Type:</span>
<asp:Label ID="lblType" runat="server" Text='<%# evalLabelType((Eval("UnitType"))) %>' />
</ItemTemplate>
<EditItemTemplate>
<span class="titles">Type:</span>
<asp:TextBox ID="txtType" runat="server" Text="test" />
</EditItemTemplate>
</asp:TemplateField>

<asp:CommandField ShowEditButton="true" ButtonType="Button" />
</Fields>
</asp:DetailsView>
</div>

C#:

    protected void devicesGrid_SelectedIndexChanged(object sender, EventArgs e)
{
devicesDataKey = devicesRadGrid.SelectedItems[0].OwnerTableView.DataKeyValues[devicesRadGrid.SelectedItems[0].ItemIndex]["ID"].ToString();
devicesDetailsView.DataSource = getDS();
devicesDetailsView.DataBind();
}

protected void devicesDetails_ItemCommand(object sender, DetailsViewCommandEventArgs e)
{
if (e.CommandName == "Edit")
{
// Switch mode and rebind
devicesDetailsView.ChangeMode(DetailsViewMode.Edit);
devicesDetailsView.DataSource = getDS();
devicesDetailsView.DataBind();
}
}



protected void devicesDetails_DataBound(object sender, EventArgs e)
{

//HideShowFields(devicesDataKey);

// Checking the mode again
string test22 = devicesDetailsView.CurrentMode.ToString();
}



protected DataTable getDS()
{

string ID = devicesDataKey;

// Get that device type!
SqlCommand getDeviceType = new SqlCommand("SELECT UnitType FROM dbo.unit WHERE ID='" + ID + "'", connection);

connection.Open();
devicesTypeID = getDeviceType.ExecuteScalar().ToString();
connection.Close();
getDeviceType.Dispose();

// This for attenuation. Depending on the device type it may pull from a different table.
if (devicesTypeID == "2" || devicesTypeID == "3" || devicesTypeID == "4")
{
SqlCommand cmd = new SqlCommand("SELECT UnitType,Unit.Active,Name, Description, PrinterName, PrinterPort, PrinterIP, Unit.IPAddress, Unit.ID, LockHoldTimeout,LightOnTimeout, DoorAlertTimeout, EnableEmergAccess, EnableBizHours, ReaderAttenuation, Attenuation, Unit.LocationID, ScanTime FROM dbo.Unit INNER JOIN dbo.Readers on Unit.ID = Readers.UnitID WHERE Unit.ID='" + ID + "'", connection);
DataTable dt = new DataTable();
connection.Open();
using (cmd)
{
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
}
connection.Close();
// Attach the data to the details view
return dt;
}
if (devicesTypeID == "5" || devicesTypeID == "6")
{
SqlCommand cmd = new SqlCommand("SELECT UnitType,Unit.Active,Name, Description, PrinterName, PrinterPort, PrinterIP, Unit.IPAddress, Unit.ID, LockHoldTimeout,LightOnTimeout, DoorAlertTimeout, EnableEmergAccess, EnableBizHours, ReaderAttenuation, Unit.LocationID, ScanTime, Attenuation FROM dbo.Unit, dbo.Readers WHERE Unit.ID='" + ID + "'", connection);
DataTable dt = new DataTable();
connection.Open();
using (cmd)
{
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
}
connection.Close();
// Attach the data to the details view
return dt;
}

return null;
}

最佳答案

我想通了,事实证明我的 Telerik Ajax 管理器隐藏了我遇到的错误。我收到“DetailsView 触发事件 ModeChanging”,我使用以下链接中的说明解决了这个问题:forums.asp.net

关于c# - DetailsView 不会进入编辑模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7727904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com