【问题标题】:Editable Gridview with code behind data source from ODBC带有来自 ODBC 数据源的代码的可编辑 Gridview
【发布时间】:2009-12-15 13:32:10
【问题描述】:

我正在尝试制作一个小型网格视图,其中列出了针对非标准 SQL 数据库的查询结果,并且通过这些信息,我希望用户能够编辑一两列以更新数据库中的数据。我知道使用 sqldatasource 控件很容易做到这一点,但我缺乏这种奢侈,并且当我触发 gridview 的编辑事件时,我无法从 gridview 中的 itemTemplates 切换到 edittemplates。

任何指针?

一些代码:

<asp:GridView ID="ExamEditGridView" runat="server" OnRowEditing="EditExam" OnRowUpdating="SaveEdit"
        DataKeyNames="iproc_code" AllowSorting="true" AutoGenerateColumns="false" AutoGenerateEditButton="true">
        <HeaderStyle BackColor="#006633" Font-Bold="True" ForeColor="White" />
        <EditRowStyle BackColor="#999999" />
        <Columns>
            <asp:TemplateField HeaderText="Exam Title">
                <ItemTemplate>
                    <asp:Label ID="col1" runat="server" Text='<%# Bind("rpt_descrip") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="EditText" runat="server" Text='<%# Bind("rpt_descrip") %>' Visible="false" />
                </EditItemTemplate>
            </asp:TemplateField>
            <asp:BoundField HeaderText="Short Description" DataField="short_descrip" />
            <asp:BoundField HeaderText="Description" DataField="descrip" />
            <asp:BoundField HeaderText="Sched Note" DataField="sched_note" />
        </Columns>
    </asp:GridView>

后面的代码: (查询只是一个简单的选择语句)

string mod_id = modSelect.SelectedValue;

        string query = qry + mod_id;

        using (OdbcConnection connection = new OdbcConnection(DbConnectionString))
        {
            OdbcDataAdapter adapter = new OdbcDataAdapter(query, connection);
            DataTable dt = new DataTable();
            connection.Open();
            adapter.Fill(dt);
            ExamEditGridView.DataSource = dt;
            ExamEditGridView.DataBind();
        }

当下拉列表索引更改时,gridview 是数据绑定的,这为我提供了查询的 mod_id

【问题讨论】:

  • 你能展示你的数据绑定代码吗?

标签: asp.net gridview


【解决方案1】:

我最终让它工作了,我没有意识到我必须设置 gridview 的 editindex 值并重新绑定以切换编辑模式

代码:

protected void EditExam(object sender, GridViewEditEventArgs e)
    {
        ExamEditGridView.EditIndex = e.NewEditIndex;
        ExamEditGridView.DataSource = Session["data"];
        ExamEditGridView.DataBind();
    }

protected void CancelEdit(object sender, GridViewCancelEditEventArgs e)
    {
        ExamEditGridView.EditIndex = -1;
        ExamEditGridView.DataSource = Session["data"];
        ExamEditGridView.DataBind();
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多