标签: formview

当FormView设置为插入模式时,控制在回发后不保留值

我正在使用Page_Load事件中的ChangeMode方法将FormView的CurrentMode设置为插入模式,如下所示:

if(!Page.IsPostBack)
{
    MyFormView.ChangeMode(FormViewMode.Insert);
}
Run Code Online (Sandbox Code Playgroud)

在我的FormView插入模板中,我有一个DropDownList控件,其AutoPostBack属性设置为true.我还在插入模板中有几个其他DropDownList和TextBox控件.

每当我更改DropDownList的选择并发生回发时,我将丢失输入到控件中的所有值.奇怪的是,如果我在初始页面加载后的任何时候使用ChangeMode将FormView设置为插入模式我没有问题.我已经使用调试器逐步完成了代码,所有内容似乎都正确地发生了但是在DropDownList的事件处理程序运行之后的某些时候,所有内容似乎都被重置了.

这里发生了什么?

更新:我注意到我的FormView位于div标签内,其中runat ="server"和enableviewstate ="false".一旦我为容器div启用了viewstate,我开始看到一个稍微不同的行为.在第一次回发后,FormView仍然不保留值,但现在后续回发工作正常,并保留值.

任何想法将不胜感激.

asp.net formview

6
推荐指数
1
解决办法
8987
查看次数

如何使用过滤器从EntityDataSource填充可更新的FormView

我正在尝试创建一个用于更新帐户详细信息的成员页面.我想用成员的数据填充表单,但我不知道如何在EntityDataSource上设置过滤器来限制查询.

当我根据成员ID设置select语句时,我收到错误

Select cannot be set if EnableDelete, EnableInsert, or EnableUpdate is enabled.

我认为这是因为你不能更新投影或其他东西,但是在这周围有什么?

或者我是否必须在Page_Load中运行查询并自己填充表单?

c# asp.net formview entity-framework entitydatasource

6
推荐指数
1
解决办法
4535
查看次数

以编程方式将事件分配给FormView中的Child

我意识到你可以通过在aspx页面上添加它的属性(即onclick ="Button_Click")以声明方式将事件处理程序分配给formview中的子控件,但是如果我想以编程方式执行此操作,我将如何进行此操作?该控件不会通过Page的Init或Load事件中的FormView.FindControl找到,因此无法在这些阶段中分配.FormView的DataBound事件将允许您查找控件,但是不合适,因为它只发生一次,然后事件不会始终被绑定,并且它不会触发.我不是在问,因为我无法绕过它,我只是想知道它是如何完成的.

干杯.

c# asp.net formview event-handling

6
推荐指数
1
解决办法
1279
查看次数

自动将ASP.NET FormView绑定到新插入的记录

是否有可能让FormView在其刚刚通过其InsertItemTemplate插入的记录上自动默认为ReadOnly模式?看起来这应该是一些应该自然而然地出现在FormView上的东西.

asp.net data-binding formview

6
推荐指数
1
解决办法
9246
查看次数

Django:使用post()方法的ListView?

我试图在基于Django类的视图中处理两个表单.该站点包含一个名为form(基于GET)的表单,用于缩小ListView和第二个表单status_form(基于POST)的列表结果.

两个表单都是必需的,因为ListView返回一个项列表.Form让用户限制选择并status_forms让用户通过模态表单标记不正确的项目(因此它需要在同一模板中).

我的麻烦是,ListView方法没有post,但是FormView.我的类List继承自这两个类,但是当我执行该类时,我收到错误消息:

属性错误:'List'对象没有属性'status_form'

我该如何更改我的实现以允许通过post method?处理第二个表单?

class List(PaginationMixin, ListView, FormMixin):
    model = ListModel
    context_object_name = 'list_objects'
    template_name = 'pages/list.html'
    paginate_by = 10 #how may items per page

    def get(self, request, *args, **kwargs):
        self.form = ListSearchForm(self.request.GET or None,)
        return super(List, self).get(request, *args, **kwargs)

    def post(self, request, *args, **kwargs):
        self.status_form = StatusForm(self.request.POST or None)
        if self.status_form.is_valid():
            ...
        else:
            return super(List, …
Run Code Online (Sandbox Code Playgroud)

python django formview django-class-based-views class-based-views

6
推荐指数
1
解决办法
2万
查看次数

FormView EditTemplate如何更新ObjectDataSource UpdateParameters中的值?

我有一个绑定到ObjectDataSource的FormView.

*ObjectDataSource定义(为简单起见,省略了部分内容)*

<asp:ObjectDataSource 
    ID="odsHousehold" 
    runat="server"
    TypeName="BLL.Households"
    ConflictDetection="OverwriteChanges"
    UpdateMethod="UpdateHousehold" 
    >
    <UpdateParameters>
        <asp:Parameter Name="sName" Type="String" Direction="Input" />
        <asp:Parameter Name="sAddress" Type="String" Direction="Input" DefaultValue="" />
        <asp:Parameter Name="sCity" Type="String" Direction="Input" DefaultValue="" />
        <asp:Parameter Name="sState" Type="String" Direction="Input" DefaultValue="" />
        <asp:Parameter Name="sZip" Type="String" Direction="Input" DefaultValue="" />
    </UpdateParameters>
</asp:ObjectDataSource>
Run Code Online (Sandbox Code Playgroud)

*FormView定义(为简单起见,省略了部分内容)*

   <asp:FormView 
    ID="fvHousehold"
    runat="server"
    DataKeyNames="HouseholdID"
    DataSourceID="odsHousehold"
    HorizontalAlign = "Left"
 >
<EditItemTemplate>
<asp:TextBox ID="txtHouseHoldName" runat="server" MaxLength="50" Width="100%" Text='<%# Bind("HouseholdName") %>'></asp:TextBox>
<asp:TextBox ID="txtAddress" runat="server" MaxLength="50" Width="100%" Text='<%# Bind("Address") %>'></asp:TextBox>
<asp:TextBox ID="txtCity" runat="server" MaxLength="50" Width="100%" Text='<%# Bind("City") %>'></asp:TextBox>
<asp:TextBox ID="txtState" runat="server" MaxLength="50" …
Run Code Online (Sandbox Code Playgroud)

c# asp.net formview objectdatasource

5
推荐指数
1
解决办法
1万
查看次数

在插入方法触发后,如何防止FormView清除用户输入的值?

我一直在努力让FormViews按照微软预期的方式工作大约一天,并且已经找到了很多很棒的东西.

我可以在ObjectDataSource.Inserting事件处理程序中捕获e.Exception和e.ReturnValue,我甚至可以通过检查e.ObjectInstance来欺骗和检查ObjectDataSource.ObjectDisposing中Object的其他属性......我甚至了解到FormView的插入处理程序在ObjectDisposing处理程序之后运行所以如果发现问题,我仍然有时间对它做出反应并在FormView上将e.KeepInInsertMode设置为true.

我的问题是,似乎用户输入到Insert表单中的值无论如何都被清除.

那么,在插入方法被触发后,如何防止FormView清除?

(使用ASP.NET + VB)

我不认为在这里发布我的代码会真的做得很好,我将不得不修改它以删除机密业务逻辑的东西......所以我现在就跳过它.

编辑:

我找到了一个临时且公认的非常狡猾的解决方案(如果没有人找到真正的解决方案).

我有一个页面变量定义为:

Dim eInsertArgs As FormViewInsertedEventArgs
Run Code Online (Sandbox Code Playgroud)

然后我在ItemInserted处理程序中执行以下操作

    If boolInsertErrorOccurred = False Then
        e.KeepInInsertMode = True
        eInsertArgs = e
    Else
        eInsertArgs = Nothing
    End If
Run Code Online (Sandbox Code Playgroud)

然后在每个控件上我有这样的控件数据绑定事件:

    If IsNothing(eInsertArgs) = False Then
        Dim _sender As TextBox = sender
        _sender.Text = eInsertArgs.Values("_FieldName")
    End If
Run Code Online (Sandbox Code Playgroud)

这样做的结果是我在将ASP.NET绑定到默认(空白)模板后将值设置为提交的值.

请帮我找一个不太可怕的解决方案.:)

vb.net asp.net formview objectdatasource insert

5
推荐指数
1
解决办法
1682
查看次数

无法从后面的代码加载 FormView 上的 DropDownList?

我有一个 UserControl,包含一个 FormView,包含一个 DropDownList。FormView 绑定到数据控件。

像这样:

<asp:FormView ID="frmEdit" DataKeyNames="MetricCode" runat="server" DefaultMode="Edit" DataSourceID="llbDataSource" Cellpadding="0" >
    <EditItemTemplate>
        <asp:DropDownList ID="ParentMetricCode"  runat="server" SelectedValue='<%# Bind("ParentMetricCode") %>' />
    </EditItemTemplate>
<asp:FormView>
Run Code Online (Sandbox Code Playgroud)

我正在尝试从代码隐藏填充 DropDownList。如果这不包含在 FormView 中,我通常只会在 Page_Load 事件中执行它。但是,这在 FormView 中不起作用,只要我尝试这样做,访问代码中的下拉列表,即:

theListcontrol = CType(formView.FindControl(listControlName), ListControl)  
Run Code Online (Sandbox Code Playgroud)

...调用FormView的数据绑定机制,当然,它试图将DropDownList绑定到底层数据源,导致**'ParentMetricCode'有一个无效的SelectedValue,因为它不存在于列表中项目。“参数名称:值...”错误,因为尚未填充 DropDownList。

我尝试在 FormView 的 DataBinding() 事件中执行加载,但是:

theListcontrol = CType(formView.FindControl(listControlName), System.Web.UI.WebControls.ListControl)
Run Code Online (Sandbox Code Playgroud)

...失败,因为此时 FormView.Controls.Count = 0。

这是不可能的吗?(我不想使用辅助 ObjectDataSource 将下拉列表绑定到)

.net asp.net formview drop-down-menu

5
推荐指数
1
解决办法
1万
查看次数

过程或函数'xyz'指定了太多参数

我知道这类问题在SO上至少被问了十几次,但我已经完成了我在这里找到的所有先前的问题和答案,而且我找不到任何适用的问题.我在我的页面上使用了几个FormView对象,现在想要添加选项来编辑其中一个.FormView由链接到存储过程的SqlDataSource填充,因此我创建了一个存储过程来更新记录并将其添加到SqlDataSource,现在看起来像这样:

<asp:SqlDataSource ID="TestSqlDataSource" runat="server" 
                   SelectCommandType="StoredProcedure" 
                   ConnectionString="<%$ ConnectionStrings:development %>" 
                   SelectCommand="usp_GetNewTestDetails" 
                   UpdateCommand="usp_UpdateTest" 
                   UpdateCommandType="StoredProcedure" 
                   onupdating="TestSqlDataSource_Updating">
    <SelectParameters>
        <asp:SessionParameter SessionField="TestID" Name="TestID"/>
    </SelectParameters>
    <UpdateParameters>
        <asp:Parameter Name="testId" Type="Int32"/>
        <asp:Parameter Name="testerLicense" Type="Int32" />
        <asp:Parameter Name="premiseOwner" Type="String" />
        <asp:Parameter Name="premiseAddress" Type="String" />
        <asp:Parameter Name="premiseCity" Type="String" />
        <asp:Parameter Name="premiseState" Type="String" />
        <asp:Parameter Name="premiseZip" Type="String" />
        <asp:Parameter Name="protectionType" Type="String" />
        <asp:Parameter Name="testType" Type="String" />
        <asp:Parameter Name="repairs" Type="String" />
        <asp:Parameter Name="notes" Type="String" />
        <asp:Parameter Name="testDate" Type="DateTime" />
        <asp:Parameter Name="employerName" Type="String" />
        <asp:Parameter Name="employerAddress" Type="String" />
        <asp:Parameter Name="phoneNumber" Type="String" />
        <asp:Parameter Name="emailAddress" Type="String" …
Run Code Online (Sandbox Code Playgroud)

asp.net formview stored-procedures

5
推荐指数
1
解决办法
9241
查看次数

Django FormView不保存

我的表单没有保存我需要它的模型.我的表格:

class RewardForm(forms.Form):
    quantity = forms.IntegerField(max_value=10, min_value=1, label=_('quantity'), initial=1)
    reward = forms.CharField(max_length=50, label=_('reward'))
    reward_denomination = forms.ModelChoiceField(queryset=Reward_Denomination.objects.all(), widget=forms.RadioSelect)

    def clean_reward(self):
        data = self.cleaned_data.get('reward')
        try:
            reward = Reward.objects.get(reward_name=data)
        except ObjectDoesNotExist:
            raise forms.ValidationError(_('Reward does not exist'), code='invalid')
        return data

    def clean_reward_denomination(self):
        data = self.cleaned_data.get('reward_denomination')
        try:
            denomination = Reward_Denomination.objects.get(denomination=data)
        except ObjectDoesNotExist:
            raise forms.ValidationError(_('Denomination does not exist'), code='invalid')
        return data

    def save(self, request, commit=True):
        user = request.user
        data = self.cleaned_data

        'try:
            post_reward = data['reward']
            post_denomination = data['reward_denomination']
            quantity = data['quantity']
        except LookupError:
            raise Http404

        reward …
Run Code Online (Sandbox Code Playgroud)

python forms django formview

5
推荐指数
1
解决办法
4710
查看次数