代码之家  ›  专栏  ›  技术社区  ›  Jimmy

可编辑的Gridview,带有ODBC中的代码隐藏数据源

  •  1
  • Jimmy  · 技术社区  · 16 年前

    我正在尝试创建一个小的gridview,其中列出了针对非标准SQL db的查询结果,我希望用户能够使用此信息编辑一两列以更新db中的数据。我知道使用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

    1 回复  |  直到 16 年前
        1
  •  2
  •   Jimmy    16 年前

    我最终让它工作了,我没有意识到我必须设置gridview的editindex值和redatabind来切换编辑模式

    代码:

    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();
        }
    
    推荐文章